【发布时间】:2017-12-18 20:42:42
【问题描述】:
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() 子是通向工作簿的网关,我们必须找到一种解决方法才能使其正常工作似乎有点奇怪。
【问题讨论】:
-
(a) 我创建(使用 Excel 2016)一个带有
Workbook_Open宏的工作簿,保存它(启用宏),关闭 Excel,在 Windows 资源管理器中双击文件,然后宏触发OK(当然在我选择“启用宏”之后)。 (b) 现在的默认行为是在 Excel 的一个实例中打开新工作簿,但窗口不会“锁定”在一起 - 即不受单个矩形边框的约束。窗口不受相同边框约束的事实不应该(AFAIK)影响它们的操作方式。 (并且有一种解决方法可以打开新的 Excel 实例。) -
SDI(单文档界面)于2013年推出msdn.microsoft.com/VBA/Excel-VBA/articles/…
-
您是从另一个工作簿的 VBA 代码打开此工作簿吗?