【问题标题】:Excel 2007 - Catch open command bar button eventExcel 2007 - 捕获打开命令栏按钮事件
【发布时间】:2010-11-06 20:00:06
【问题描述】:

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

之前的基本前提是创建一个带有命令栏按钮和相关事件的类,然后在应用打开时设置该命令栏按钮,它会捕获它,但现在它没有。现在还有别的办法吗?

Public WithEvents cmdBold As Office.CommandBarButton Private Sub cmdBold_Click (ByVal Ctrl As Office.CommandBarButton, _ 取消默认为布尔值) ' 插入您想要运行以响应此事件的代码。 结束子

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

【问题讨论】:

    标签: excel excel-2007 vba


    【解决方案1】:

    目前还没有真正跟上 2007 年的步伐,但我认为功能区 UI 的更改已经改变了您的应用程序的工作方式。

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

    旧版解决方案和自定义的兼容性

    许多公司依赖定制 基于 Microsoft 构建的应用程序 办公系统及解决方案 将 Microsoft Office 与 第三方应用程序。许多 这些解决方案修改 Office UI 通过命令栏对象模型。 在 2007 Office 版本中,此代码 继续工作——在大多数情况下 无需修改。

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

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

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

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

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

    似乎只能使用 XML 重新调整内置控件的用途。来自同一文档的前面部分:

    可扩展性的机会

    重新利用内置控件。您可以通过编写将自定义代码连接到内置控件的每个实例的单行 XML 来接管 UI 中任何位置的任何内置控件的功能。您可以修改控件以执行自定义代码,并且可以选择继续使用内置功能。

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

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 2015-01-23
      • 2014-12-22
      相关资源
      最近更新 更多