Excel 2007 - 捕获打开的命令栏按钮事件

时间:2009-06-29 21:19:55

标签: excel excel-vba excel-2007 vba

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

之前的基本前提是创建一个带有命令栏按钮和相关事件的类,然后在应用程序打开时设置该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

1 个答案:

答案 0 :(得分:1)

还没有达到2007年的速度,但我认为对功能区UI的更改已经改变了应用程序的工作方式。

来自this lengthy MSDN article的“开发人员注意事项”部分:

  

传统解决方案和自定义的兼容性

     

许多公司依赖定制   在微软上构建的应用程序   办公系统和解决方案   将Microsoft Office与Microsoft集成   第三方应用程序。很多   这些解决方案修改了Office UI   通过Command Bars对象模型。   在2007 Office版本中,此代码   在大多数情况下继续工作   没有修改。

     

对Office中的工具栏所做的更改   2003年通常出现在2007年   在“加载项”选项卡上发布   功能区(见图18)。的类型   出现的自定义取决于   加载项的原始设计。对于   例如,如果添加了自定义   项目到上一个菜单结构,   Office Fluent UI创建一个菜单   命令组。如果是自定义代码   添加项目到内置工具栏,   Office Fluent UI创建工具栏   包含这些的命令组   控制。由加载项添加的工具栏   显示在“自定义工具栏”组中。

     

鼠标点击和其他事件   “加载项”选项卡会触发相同的结果   与前面的菜单和工具栏一样   接口。执行的加载项代码   单击工具栏按钮时   以前的UI仍然执行时   用户点击相应的   工具栏组中的按钮   2007版本中的“加载项”选项卡。

     

请求隐藏菜单和工具栏或   删除控件将被忽略。 如果   加载项尝试重新调整用途   通过改变内置功能   菜单项或工具栏的行为   按钮,例如“保存”或“打印”   预览,Office应用程序复制   “加载项”选项卡的控件和   改变它,留下原始   控制功能区或Microsoft   Office按钮菜单未更改。

     

虽然可以删除或   禁用内置控件   以编程方式在2007年发布,   删除或重新排序菜单的加载项   以前的项目和工具栏项目   Microsoft Office的版本没有   加载时的效果。

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

似乎只能使用XML来重新定位内置控件。从同一文档的早期开始:

  

可扩展性的机会

     

重新调整内置控件。您可以通过编写将自定义代码连接到内置控件的每个实例的单行XML来接管UI中任何位置的任何内置控件的功能。您可以修改控件以执行自定义代码,也可以选择继续执行内置功能。<​​/ p>

最后,this even longer MSDN article解释了XML自定义的工作原理