Excel 2007 – 捕获打开命令栏button事件

在Excel 2007之前,我们使用vba来捕获Excel中的打开文件事件,以便我们可以显示我们自己的打开对话框,知道如何查找客户端文件夹。 在Excel 2007中,这不再有效,现在有没有人对它的工作有任何的想法

之前的基本前提是创build一个带有一个命令栏button和一个相关事件的类,然后在应用程序打开时设置该commandBarButton,它将捕捉它,但现在不会。 现在有另一种方法吗?

Public WithEvents cmdBold As Office.CommandBarButton Private Sub cmdBold_Click(ByVal Ctrl As Office.CommandBarButton,_ CancelDefault As Boolean)'插入要运行的代码以响应此事件。 结束小组

http://msdn.microsoft.com/en-us/library/aa189726(office.10).aspx

2007年还没有真正的加速,但我认为丝带UI的改变已经改变了你的应用程序的工作方式。

从这篇冗长的MSDN文章的“开发人员注意事项”部分:

传统解决scheme和定制的兼容性

许多公司依靠构build在Microsoft Office系统上的自定义应用程序以及将Microsoft Office与第三方应用程序相集成的解决scheme。 其中许多解决scheme通过命令栏对象模型来修改Office UI。 在2007 Office版本中,此代码可以继续工作 – 在大多数情况下无需修改。

对Office 2003中的工具栏所做的更改通常显示在function区的“加载项”选项卡上的2007版中(请参见图18)。 显示的自定义types取决于加载项的原始devise。 例如,如果自定义添加项目到以前的菜单结构,Office Fluent UI将创build一个菜单命令组。 如果自定义代码将项添加到内置工具栏,Office Fluent UI将创build一个包含这些控件的工具栏命令组。 通过加载项添加的工具栏显示在“自定义工具栏”组中。

在“加载项”选项卡上的鼠标单击和其他事件会触发与以前的菜单和工具栏界面中相同的结果。 当用户单击2007版本的“加载项”选项卡的“工具栏”组中的相应button时,仍会执行在上一个用户界面中单击工具栏button时执行的加载项代码。

要求隐藏菜单和工具栏或删除控件将被忽略。 如果加载项通过更改菜单项或工具栏button(如“保存”或“打印预览”)的行为来尝试重新调整内置function,Office应用程序会将控件复制到“加载项”选项卡并将其更改,从而将原始function区或Microsoft Officebutton菜单上的控件不变。

虽然可以在2007版本中以编程方式删除或禁用内置控件,但在加载Microsoft Office的早期版本时删除或重新sorting菜单项和工具栏项的加载项无效。

因此,您可能会发现在“加载项”选项卡中有一个额外的“打开”控件。

似乎重新使用内置控件只能使用XML。 从同一份文件早些时候起:

扩展性的机会

重新调整内置控件。 您可以通过编写一行连接自定义代码和每个内置控件实例的XML来接pipe任何内置控件的function。 您可以修改该控件以执行自定义代码,并可select继续使用内置function。

最后, 这个更长的MSDN文章解释了XML定制如何工作