我有两个电子表格。为了便于示例代码,我们将使用Book1和Book2。 Book1包含一张纸,Book2包含两张纸。
Book2包含代码:
Function Auto_Open()
sheets(1).range("B1:B50").formula="=vlookup(A1,Sheet2!A1:C50,3,False)"
End Function
第一册包含如下代码:
Function UpdateBook()
Workbooks("Desktop\Book2.xls").open
workbooks("Book2").sheets(2).values=workbooks("Book1").sheets(1).values
workbooks("Book2").close
End Function
我希望防止Book2上的Auto_Open因Book1打开Book2中的功能而打开时运行。这是否可以使用一段VBA代码?
答案 0 :(得分:2)
在打开book2之前禁用事件:
Application.EnableEvents = False
Workbooks("Desktop\Book2.xls").open
...
Application.EnableEvents = True
答案 1 :(得分:0)
您可以强制自动化安全设置为禁用宏,然后将其恢复为原始状态,如下所示:
Dim secAutomation As MsoAutomationSecurity
secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Workbooks("Desktop\Book2.xls").open
workbooks("Book2").sheets(2).values=workbooks("Book1").sheets(1).values
workbooks("Book2").close
Application.AutomationSecurity = secAutomation
这样做的另一个好处是,在打开宏嵌入文件时不要询问用户是否要启用宏。