不允许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。