一个工作簿中的宏是否可以更改另一个工作簿?

时间:2011-07-25 05:35:22

标签: excel vba excel-vba excel-2003

我在一个工作表(internal.xls)中将宏定义为

Public Sub sheet2test()
   Workbooks.Open Filename:="external.xls"
   Windows("external.xls").Activate
   Sheets("Sheet3").Activate
   Range("A5").Value = 5

End Sub

运行此代码,打开external.xls,并激活其工作表3.但是,Value of 5放在internal.xls而不是external.xls中。如何确保对其他工作表进行更改?

3 个答案:

答案 0 :(得分:7)

我宁愿使用:

dim wb as workbook, sh as worksheet
set wb = workbooks.open("thatWorkbook.xls")
'Now you have a proper reference to the newly opened workbook !
set sh = wb.sheets("sheet3")
sh.range("a1") = "hello world"

正如其他人所说,各种Activate指令比这里的用处更不方便。

答案 1 :(得分:6)

您无需执行所有此操作。它只是导致屏幕闪烁和处理延迟。

Public Sub sheet2test()
   Workbooks.Open Filename:="external.xls"
   Workbooks("external.xls").Sheets("Sheet3").Range("A5").Value = 5
End Sub

答案 2 :(得分:4)

答案是肯定的。

尝试使用以下代码对external.xls进行更改:

Public Sub sheet2test()
 Workbooks.Open Filename:="external.xls"
 Workbooks("external.xls").Activate
 ActiveWorkbook.Sheets("Sheet3").Activate
 Range("A5").Value = 5
End Sub

我在第4行添加了ActiveWorkbook.

必须添加此项以在当前活动的工作簿(external.xls)中进行更改,而不是包含和执行宏的工作簿 (internal.xls)