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

Ali*_*Ali 3 excel vba excel-2003 excel-vba

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

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

End Sub
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ier 7

你不需要做所有这些激活.它所做的只是导致屏幕闪烁和处理延迟.

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


Pat*_*rez 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"
Run Code Online (Sandbox Code Playgroud)

如其他人所述,各种Activate指令在这里比使用更不方便.