Excel 2016中的Workbook_Open()未触发

时间:2017-07-13 21:32:35

标签: excel-vba vba excel

Excel 2016(或365)似乎没有可靠或更精确地触发Workbook_Open()子,完全没有!任何人都可以加入这个故事吗? 简单的事件子

Private Sub Workbook_Open()

    MsgBox "Work book is open"

End Sub

似乎不起作用。但是,如果工作簿已打开,然后打开包含上述Sub的工作簿,它将按预期运行。 我注意到,与Excel 2010不同,2016(365)在其自己的窗口中打开每个工作簿,而不是Excel应用程序窗口中的工作簿窗口。这是2016年的一个错误,是否有解决方法? 我为自己的应用程序制作了一个解决方法,即调用工作表的激活并从那里调用我的初始化例程。但有点"粗糙"并且让Workbook_Open()子工作正常。 欢迎评论。

问题的进一步背景 谢谢大家的回复。它是ThisWorkbook模块中的一个简单的单个Sub。宏已启用。在Excel 2010中,它可以完美地工作,就像我编写宏的其他工作簿中的其他宏一样。 Excel 2016就是这一点 鉴于Workbook_Open()子是工作簿的网关,我们必须去解决它的功能似乎有点奇怪。

4 个答案:

答案 0 :(得分:0)

我的一个文件也遇到了这个问题。我设法通过在打开VBA编辑器中手动运行Workbook_Open并将文件保存在另一个位置来解决此问题。新位置中的文件应该没有自动运行Workbook_Open的问题。如果这不起作用,请在手动运行之前将原始文件复制到新位置。节省。

如果新保存的文件未运行Workbook_Open,请修复您的Office版本。

答案 1 :(得分:0)

尝试使用新的Excel实例封装调用。示例如下:

     Sub OpenInNewExcel()

        Dim Background_Excel As Excel.Application
        Dim pathName As String
        Dim fileName As String

        Let pathName = "Enter your path here" 'include "\" at the end
        Let fileName = "Enter your file name here"

        Background_Excel.Workbooks.Open fileName:=pathName & fileName



        Background_Excel.Parent.Quit ' This is how you close the file completely using VBA otherwise the file will close and the Excel Shell will remain.


    End Sub

还要确保在选项 - 信任中心中启用了启用宏。

答案 2 :(得分:0)

您必须将工作簿的“受信任位置”添加为“受信任源”。

更多here

答案 3 :(得分:0)

我有同样的问题,然后我在谷歌后找到了解决方案: https://www.myonlinetraininghub.com/excel-forum/vba-macros/excel-2016-workbook_open-event-doesnt-trigger

然后我还使用了在 excel 2016 中打开的“Private Sub Workbook_Open()”和“Public Sub Auto_Open()”,效果很好:

Private Sub Workbook_Open()
    CustomStartUp
End Sub

Public Sub Auto_Open()
    CustomStartUp
End Sub


Private Sub CustomStartUp()
    MsgBox "Work book is open"
End Sub