不允许Auto_Open运行的VBA

时间:2017-07-24 14:46:44

标签: excel vba excel-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代码?

2 个答案:

答案 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

这样做的另一个好处是,在打开宏嵌入文件时不要询问用户是否要启用宏。