首页 > 解决方案 > VBA:设置工作簿,并激活工作簿错误

问题描述

有一个简单的任务,我无法弄清楚。我想复制 wb1.ws1 的值并粘贴到 wb2.ws2

这是我尝试过的。

Dim wb1 as Workbook, wb2 as Workbook
Dim ws1 as Worksheet, ws2 as Worksheet

'Open wb1 and ws1 and set
Set wb1 = Workbooks.Open("R:\Workbook1.xlsx")
Set ws1 = Sheet("Sheet1")

'Open wb2 and ws2 and set
Set wb2 = Workbooks.Open("R:\Workbook2.xlsx")
Set ws2 = Sheet("Sheet2")

'Copy Value of wb1.ws1 and paste into wb2.ws2
wb1.ws1.Range("A1").Copy wb2.ws2.Range("A1")

为什么这不起作用?似乎我无法通过指定 wb1.ws1.Range(XYZ) 来选择范围

它迫使我将线条分成

wb1.Activate
ws1.Select
Range("A1").Copy
wb2.Activate
ws2.Select
Range("A1").Paste

似乎非常低效,但我不知道如何消除激活选择的噩梦

标签: vbaexcel

解决方案


设置工作表后,工作簿父级已定义。所以在Set

Dim wb1 as Workbook, wb2 as Workbook
Dim ws1 as Worksheet, ws2 as Worksheet

'Open wb1 and ws1 and set
Set wb1 = Workbooks.Open("R:\Workbook1.xlsx")
Set ws1 = wb1.WorkSheets("Sheet1")

'Open wb2 and ws2 and set
Set wb2 = Workbooks.Open("R:\Workbook2.xlsx")
Set ws2 = wb2.Worksheets("Sheet2")

'Copy Value of wb1.ws1 and paste into wb2.ws2
ws1.Range("A1").Copy ws2.Range("A1")

推荐阅读