不允许Auto_Open运行的VBA
我有两个电子表格。 为了方便示例代码,我们将使用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代码吗?
在打开book2之前禁用事件:
Application.EnableEvents = False Workbooks("Desktop\Book2.xls").open ... Application.EnableEvents = True
您可以强制自动化安全设置为禁用macros,然后将其恢复到原始状态,如下所示:
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
这还有一个好处,就是在打开macrosembedded文件的时候,不要询问用户是否要启用macros。