2

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

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

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

4

1 回答 1

2

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

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

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

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

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

Add-Ins 选项卡上的鼠标单击和其他事件触发的结果与之前的菜单和工具栏界面中的结果相同。在之前的 UI 中单击工具栏按钮时执行的加载项代码仍会在用户单击 2007 版本中加载项选项卡的工具栏组中的相应按钮时执行。

隐藏菜单和工具栏或删除控件的请求将被忽略。如果加载项尝试通过更改菜单项或工具栏按钮(例如保存或打印预览)的行为来重新利用内置功能,则 Office 应用程序会将控件复制到加载项选项卡并在那里进行更改,而保留原来的功能区或 Microsoft Office 按钮菜单上的控件不变。

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

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

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

可扩展性的机会

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

最后,这篇更长的 MSDN 文章解释了 XML 自定义的工作原理

于 2009-06-30T22:15:14.647 回答