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()子是工作簿的网关,我们必须去解决它的功能似乎有点奇怪。
答案 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