【问题标题】:VBA - Execute Macro on Workbook OpenVBA - 在工作簿打开时执行宏
【发布时间】:2018-11-06 21:15:31
【问题描述】:

我有 3 个 xlsm 工作簿,里面有一堆宏。当每个工作簿打开时,用户会看到一个弹出窗口,询问他们是否要执行 Call_All 宏来运行它们。如果用户点击是,那么它会执行,如果不是,那么什么都不会发生。

我这样做的原因是因为我试图尽可能地自动化管理工作,并使流程尽可能地为用户提供“虚拟证明”。因此,如果我不弹出窗口询问用户他们想要做什么,而我只是在“此工作簿”文件中调用 Call_All 宏,那么无论何时打开文件 - 即使是要修改某些内容(例如作为代码),整个宏将执行。

现在,我遇到的问题是:

我运行了一系列脚本,最后一个脚本打开了第一个工作簿并弹出“是/否”。当用户为此工作簿单击“是”时,宏将完美执行。每个工作簿中的最后一个宏打开下一个 xlsm 文件,在此文件上再次询问用户是否要执行新工作簿中的宏。但是,这一次它没有执行,并且绝对没有任何反应。当打开下一个 xlsm 文件时,同样的事情再次发生。

注意:如果我单独打开每个 xlsm 文件并单击“是”,则它们可以正常工作。只有当我打开上一个工作簿中的文件时。

这是调用 Call_All 宏的代码(位于“ThisWorkbook”文件中):

Private Sub Workbook_Open()

    Dim varResponse As Variant

    varResponse = MsgBox("Run Macro?", vbYesNo, "Selection")
    If varResponse <> vbYes Then

        Exit Sub

    Else

        Call_All

    End If



End Sub

所有 3 个工作簿中的代码完全相同。

【问题讨论】:

  • 尝试在所有“宏”中搜索这些行 - Application.EnableEvents = False。它存在吗?
  • @Vityata 没有任何行带有 'Application.EnableEvents = False' 但有 'Application.ScreenUpdating = False' & 'Application.DisplayAlerts = False'
  • 他们后面是'Application.ScreenUpdating = True' &amp; 'Application.DisplayAlerts = True' 吗?因为如果不是,那么您将关闭屏幕更新并且永远不会重新打开它,因此当您运行宏时似乎没有发生任何事情,因为屏幕没有更新
  • @Banana 在打开下一个工作簿之前,我将 'Application.ScreenUpdating = True' 和 'Application.DisplayAlerts = True' 放在宏的末尾,但它仍然没有改变任何东西..
  • @Banana 我什至将 Application.EnableEvents = True 放在打开的工作簿的“ThisWorkbook”文件中

标签: vba excel


【解决方案1】:

。 看看这个资源(大约在页面的一半: https://exceloffthegrid.com/how-to-run-a-macro-from-another-workbook/

Sub CallAnotherMacro()

Application.Run "'Another Workbook.xlsm'!NameOfMacro"

End Sub

【讨论】:

  • 感谢您的回答,它正在做同样的事情,但我想出了原因。我已经在下面发布了答案。
  • 我的帖子“低于”你的帖子,但是当标记为答案时,它被移到了我原来的问题下。请参考以上内容。
【解决方案2】:

@Rory 在另一篇文章中回答。即使上面有@Jerry 的回答,我也继续收到同样的问题。

这就是原因:

关闭调用第二个工作簿中代码的第一个工作簿。

@Rory 说:

然后我怀疑这是您的问题 - 该代码是您当前正在运行的代码的调用者。如果你结束了它,你也结束了被调用的代码。我建议您尝试使用 Application.OnTime 调用第二个工作簿中的代码,以便第一个代码可以在工作簿关闭之前真正完成。

不幸的是,我也无法得到@Rory 对 Application.OnTime 的建议,但是,我找到了下面的链接来解释原因:

Closing a workbook from an other one without stopping code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多