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

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

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

运行这个代码,打开external.xls,并激活它的表3.然而,5的值被放在internal.xls而不是external.xls。 我如何确保对其他工作表进行更改?

答案是肯定的

你只是错过了一件事。 试试下面的代码来更改external.xls:

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

编辑:

对不起,我没有指出我所做的改变。

我刚joinActiveWorkbook. 到第4行。必须添加这些内容才能在当前活动工作簿(external.xls)中进行更改,而不是包含并执行macros(internal.xls)的工作簿

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

公共Sub sheet2test()Workbooks.Open Filename:=“external.xls”Workbooks(“external.xls”)。Sheets(“Sheet3”)。Range(“A5”)。Value = 5 End Sub

我会用:

 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说明比在这里使用起来更麻烦。