【问题标题】:VBA that doesn't allow Auto_Open to Run不允许 Auto_Open 运行的 VBA
【发布时间】:2017-07-24 14:46:43
【问题描述】:

我有两个电子表格。为了简化示例代码,我们将使用 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 代码来实现吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在打开 book2 之前禁用事件:

    Application.EnableEvents = False
    Workbooks("Desktop\Book2.xls").open
    ...
    Application.EnableEvents = True
    

    【讨论】:

      【解决方案2】:

      您可以强制自动化安全设置禁用宏,然后将其恢复为原始状态,如下所示:

      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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        相关资源
        最近更新 更多