自定义适用于开发人员的 office_第1页
自定义适用于开发人员的 office_第2页
自定义适用于开发人员的 office_第3页
自定义适用于开发人员的 office_第4页
自定义适用于开发人员的 office_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自定义适用于开发人员的 office (2007) 功能区用户界面 适用于:2007 Microsoft Office 套件Microsoft Office Access 2007Microsoft Office Excel 2007Microsoft Office PowerPoint 2007Microsoft Office Outlook 2007Microsoft Office Word 2007摘要:了解在 2007 Microsoft Office 版本中自定义功能区用户界面 (UI) 时可使用的应用场景和 XML 标记。在 2007 版本中,功能区 UI 替代了菜单、工具栏和大多

2、数任务窗格 UI。改进的用户界面2007 Microsoft Office 系统中的许多应用程序都面貌一新。功能区用户界面 (UI) 功能以进行了效率和可发现能力优化的、更简单的界面系统替代了采用分层菜单、工具栏和任务窗格的现有系统。新的 UI 改进了上下文菜单、屏幕提示、小型工具栏和键盘快捷键,这提高了用户效率和生产力。注意 2007 Microsoft Office 版本中实现了功能区 UI 功能,该版本包括 Microsoft Office Access 2007、Microsoft Office Excel 2007、Microsoft Office PowerPoint 2007、M

3、icrosoft Office Word 2007 和 Microsoft Office Outlook 2007。Microsoft Office Outlook 2007 中还在下列情况下实现了该功能:用户创建或编辑电子邮件消息;或使用联系人并位于“日历”中。可通过组合使用 XML 标记和 Microsoft Visual Studio 中支持的任何基于 Microsoft .NET 的语言来自定义功能区 UI。还可以使用 Microsoft Visual Basic Applications (VBA)、Microsoft Visual C+ 和 Microsoft Visual Bas

4、ic 6.0 自定义功能区 UI。本文提供有关新用户界面的详细论述,并提供功能区 UI 的代码示例和自定义应用场景。有关功能区控件和属性列表的详细参考信息,请参阅 Customizing the Office (2007) Ribbon User Interface for Developers (Part 2 of 2)(英文)。要了解 Microsoft Office 应用程序 2007 版本用户界面 (UI) 系统的开发人员概述及 UI 重新设计背后的目标,以及了解重新设计的 UI 对自定义解决方案和加载项的影响,请参阅 Developer Overview of the User In

5、terface for the 2007 Microsoft Office System(英文)。有关这些功能的详细信息,请参阅 2007 Microsoft Office System Beta 2 附带的 Ribbon UI 自述文件。返回页首增强用户体验的新方法应用程序开发人员已利用 Office 先前版本中的工具和编程结构通过创造性的方法来扩展 UI。例如,开发人员可通过 CommandBars 对象模型在他们的自定义 Office 应用程序中构建丰富的解决方案。2007 Office 版本延续了这一传统,它引入了一种创新的模型,开发人员可以使用它来增强用户体验。可使用可扩展标记语言

6、(XML) 和若干种传统编程语言之一来操纵组成功能区 UI 的组件。由于 XML 是纯文本形式,因此可在任何文本编辑器中创建自定义文件,这简化了对 UI 的操作。而且,只需进行最基本的调整便可重复使用自定义功能区 UI 文件,因为每个应用程序都使用相同的编程模型。例如,可重复使用在 Word 2007、Excel 2007、Access 2007 或 PowerPoint 2007 中创建的自定义功能区 UI 文件。图 1. 2007 Office 版本应用程序中的功能区 UI使用 XML 标记文件自定义 UI 大大减少了对基于 CommandBars 对象模型的复杂加载项的需要。不过,在先前

7、版本的 Office 中编写的加载项在进行微小修改后或不做任何修改,即可在功能区 UI 中继续使用。本文稍后有对加载项的论述。返回页首为大多数 Office 应用程序自定义功能区 UI可按下列方法在 Word 2007、Excel 2007 或 PowerPoint 2007 中创建自定义应用程序级别功能区 UI:在托管代码或非托管代码中使用 COM 加载项使用应用程序特定的加载项,如 .ppam 文件和 .xlam 文件使用 Word 2007 中的模板(.dotm 文件)在一个典型的应用场景中,COM 加载项中的代码包含从外部自定义文件或代码自身包含的 XML 返回 XML 标记的过程。应

8、用程序启动时,将加载加载项并执行返回 XML 标记的代码。代码将根据某种 XSD 架构验证 XML 标记,然后将其加载到内存中并应用给功能区 UI。随后将出现修改过的功能区 UI。功能区 UI 命令和控件还使用回调过程来执行加载项中的代码。文档级别自定义使用相同的 XML 标记和具有下列扩展名之一的 Open XML 格式文件:.docx、.docm、.xlsx、.xlsm、.pptx 或 .pptm。在此应用场景中,将创建一个包含 XML 标记的自定义文件并将其保存到某个文件夹。然后修改 Open XML 格式容器中的部分,使其指向自定义文件。在 Office 应用程序中打开文档时,自定义文

9、件将加载到内存中并应用给功能区 UI。然后命令和控件将调用文档中包含的代码来提供其功能。返回页首现有解决方案是怎样的?在先前版本的 Office 中,开发人员使用 CommandBars 对象模型来构建修改 UI 的 Visual Basic 代码。在 2007 版本中,在大多数情况下,这些旧代码不做修改便可继续使用。不过,在 Microsoft Office 2003 中对工具栏所做的更改现在会出现在一个“加载项”选项卡上。所显示的自定义类型取决于加载项的原始设计。例如,Office 将创建一个“菜单命令”组,其中包含添加到先前菜单结构(“文件”菜单、“插入”菜单、“工具”菜单等)中的项目。

10、它还将创建一个“工具栏命令”组,其中包含添加到先前内置工具栏(“标准”工具栏、“格式”工具栏、“图片”工具栏等)中的项目。此外,加载项文档添加的自定义工具栏将出现在“加载项”选项卡的“自定义工具栏”组中。返回页首使用回调在开始详细介绍功能区 UI 自定义之前,我们先来了解一下回调的使用。就功能区扩展性而言,可指定回调以在运行时通过 UI 更新属性和执行操作。例如,假定某个按钮对应 onAction 回调函数。功能区标记将如下所示:<button id="myButton" onAction="MyButtonOnAction" />该标记指示

11、在该按钮被单击时 Microsoft Office 调用 MyButtonOnAction 函数。MyButtonOnAction 函数的签名视所选语言而定;以下为 C 中的一个示例:public void MyButtonOnAction (IRibbonControl control) if (control.Id="myButton") System.Windows.Forms.MessageBox.Show("按钮被单击!"); 只要签名与下表中的签名相符,函数 MyButtonOnAction 就可以拥有任何名称:Customizing the

12、 Office (2007) Ribbon User Interface for Developers (Part 2 of 2):Table 12. List of all C and VBA callbacks and signatures(英文)Customizing the Office (2007) Ribbon User Interface for Developers (Part 2 of 2):Table 13. List of all C+ and Visual Basic .NET callbacks and signatures(英文)必须将其声明为 public。可通过

13、 control 参数为许多不同的控件使用相同的回调函数。注意 XML 自定义标记中的所有属性均使用小写首字母表示法,即大写除第一个词外每个词的第一个字符。例如,onAction 和 insertBefore。返回页首自定义功能区 UI 的两种方法Office 的 2007 版本(Access 2007 属于例外,本文后面有对它的介绍)提供了两种使用 XML 标记自定义功能区 UI 的方法:使用包含 XML 标记的有效 Open XML 格式文件或使用包含 XML 标记的 COM 加载项。在该 XML 标记中指定的任何更改均表现为现有功能区 UI 的附加项。例如,如果添加代表一个自定义选项卡的

14、 XML 标记,将会添加一个选项卡。注意 功能区中有多个可设置各种属性的特性。有关属性列表,请参阅表 14. 功能区属性列表。功能区标记中的所有控件都必须具有下列标识符之一。表 1. 所有控件都必须与下列标识符之一联用标识符说明ID与自定义控件联用。该标识符作为 IRibbonControl 上的一个属性传递给回调函数。idMso与内置控件联用。idQ与合格控件联用。例如:<customUI xmlns= xmlns:x="myNameSpace"><button idQ="x:myButton" . . . />注意 通过创建一

15、个名称空间 x,可将两种不同的加载项添加到同一自定义组(它们只是需要通过该自定义组的限定名称对其进行引用)。使用 Open XML 格式文件自定义功能区 UI在文档级别,使用 XML 标记自定义功能区 UI 的过程包括下列步骤。有关详细信息,请参阅本文后面的在功能区 UI 中添加基于文档的加载项。使用 Open XML 格式文件自定义功能区 UI1.通过添加在功能区 UI 中添加新组件、修改现有组件或隐藏组件的 XML 标记,可在任意文本编辑器中创建自定义文件。将该文件保存为 customUI.xml。2.在桌面上创建名为 customUI 的文件夹,然后将自定义文件复制到该文件夹。3.使用自

16、定义 UI 架构验证 XML 标记。注意 该步骤是可选步骤。4.在 Office 应用程序中创建一个文档,然后将其保存为具有下列扩展名之一的 Open XML 格式文件:.docx、.docm、.xlsx、.xlsm、.pptm 或 .pptx。包含宏的文件具有后缀 m。这些文件还包括由功能区命令和控件调用的过程。5.为文档的文件名添加 .zip 扩展名,然后打开文件。6.通过将文件夹从桌面拖动到该 ZIP 文件中,将该自定义文件添加到容器。7.将 .rels 文件从 Zip 文件提取到桌面上。一个包含 .rels 文件的 _rels 文件夹即复制到桌面上。8.打开位于 _rels 文件夹中的

17、 .rels 文件,添加用于在文档文件和自定义文件之间创建关系的一行代码,然后保存文件。9.将 _rels 文件夹添加回容器,从而覆盖现有文件。10.通过删除 .zip 扩展名,将文件重命名为其原始文件名。之后,在 Office 应用程序中打开文件时,所显示的功能区 UI 将具有自定义内容。使用 COM 加载项自定义功能区 UI如果在应用程序级别进行自定义,无论打开哪一个文档,所产生的修改过的功能区 UI 都会出现在应用程序中。首先,需要创建 COM 加载项来进行这些修改。使用 COM 加载项自定义功能区 UI1.创建一个 COM 加载项项目。所创建的加载项必须实现 Extensibility

18、.IDTExtensibility2 接口(所有 COM 加载项都须如此),还必须实现附加 IRibbonExtensibility 接口(位于 Microsoft.Office.Core 名称空间中)。2.构建加载项并设置项目,然后安装项目。3.启动 Microsoft Office 应用程序。加载项加载后,将触发 IDTExtensibility2:OnConnection 事件,与在先前版本的 Office 中一样,该事件会将加载项初始化。4.接下来将调用 QueryInterface 方法,它确定是否实现了 IRibbonExtensibility 接口。5.如果已实现,将调用 IRi

19、bbonExtensibility:GetCustomUI 方法,该方法加载 XML 标记(从 XML 自定义文件或从过程中内嵌的 XML 标记),然后将自定义功能区 UI 加载到应用程序中。6.最后,用户将可以开始使用自定义功能区 UI。XML 标记中指定的每个控件均通过调用回调过程来公开其功能。例如,一个按钮控件的 XML 标记可以指定一个 onAction 属性,当用户单击该按钮时,该属性指向的过程将开始执行。在大多数情况下,回调过程都会公开一个标识该控件的 IRibbonControl 接口。也可以传递其他参数。例如,可以传递一个 Boolean 对象,它指定一个切换按钮的按下或未按下

20、状态。IRibbonControl 接口实现了三个属性:Context 对象、Id 对象和 tag 属性。Context 对象是包含触发回调的功能区的活动窗口。Id 对象是标记中指定的自定义控件的 String 标识符。tag 属性是一个不唯一属性,可选择是否在标记中指定该属性。返回页首XML 标记文件的一般格式可以使用 XML 标记自定义功能区 UI。以下示例显示的是一个在 Word 2007 中自定义功能区 UI 的 XML 标记文件的一般格式。<customUI xmlns=" > <ribbon startFromScratch="false&qu

21、ot; > <tabs> <tab idMso="TabWrite"> <group idMso="GroupFont" visible="false" /> </tab> <tab id="CustomTab" label="我的选项卡"> <group id="mygroup" label="示例组" > <button id="Button1" l

22、abel="我的大按钮" size="large" onAction="MyMacro" /> <button id="Button2" label="我的正常按钮" size="normal" onAction="MyMacro" /> </group > <group id="SimpleControls" label="我的组"> <toggleButton id

23、="ToggleButton1" size="large" label="大切换按钮" getPressed="MyMacro" /> <checkBox id="CheckBox1" label="复选框" tooltip="这是一个复选框" onAction="MyMacro" /> <editBox id="EditBox1" getText="MyMacro" la

24、bel= "我的编辑框" onChange="MyMacro"/> <comboBox id="Combo1" label="我的组合框" showItemLabel="false" onChange="MyMacro"> <item id="Zip1" label="33455" /> <item id="Zip2" label="81611" /> &

25、lt;item id="Zip3" label="31561" /> </comboBox> <advanced> <button id="Launcher" tooltip="我的启动器" onAction="MyMacro" /> </advanced> </group> </tab> </tabs> </ribbon> </customUI>该 XML 标记会产生修改过的功能区

26、 UI,如下图所示:图 2. 在 Word 中自定义功能区 UI 的示例该示例对 Word 2007 中的功能区 UI 进行了下列更改,更改按所示顺序进行:首先,示例声明默认名称空间和一个自定义名称空间。接着,示例隐藏位于内置“主页”选项卡中的内置“GroupFont”组。随后,示例将一个新的“CustomTab”选项卡添加到最后一个内置选项卡的右侧。注意 使用 id= 标识符属性来创建一个自定义项目,如一个自定义选项卡。使用 idMso= 标识符属性来引用内置项目,如“TabHome”选项卡。示例将一个新的“SampleGroup”组添加到“我的选项卡”。示例将一个大尺寸的“ToogleBu

27、tton1”按钮添加到“我的组”。还将指定一个 onAction 回调和一个 GetPressed 回调。示例将一个带有自定义屏幕提示的“CheckBox1”复选框添加到“我的组”。还将指定一个 onAction 回调。示例将一个“EditBox1”编辑框添加到“我的组”。还将指定一个 onChange 回调。示例将一个包含三个项目的“Combo1”组合框添加到“我的组”。该组合框指定一个 onChange 回调,它使用每个项目中的文本。示例将一个设置了 onAction 回调的“Launcher1”启动器添加到“我的组”。启动器也可以显示一个自定义对话框来为用户提供更多选项。示例将一个新的“

28、MyGroup”组添加到自定义选项卡中。示例将一个大尺寸的“Button1”按钮添加到“MyGroup”组。还将指定一个 onAction 回调。最后,示例将一个正常尺寸的“Button1”按钮添加到“MyGroup”组中。还将指定一个 onAction 回调。如您所见,修改功能区 UI 是件容易的工作。返回页首Access 2007 中的 UI 自定义Access 2007 中的功能区自定义与其他 Office 应用程序共享某些相同的选项,但存在一些重要的区别。正如其他 Office 2007 应用程序一样,使用 XML 标记来自定义 Access 功能区 UI。也可以使用包含 XML 标记

29、或 COM 加载项的外部文件将功能区自定义集成到应用程序中,这也与其他应用程序类似。不过,与其他 Office 应用程序不同的是,因为 Access 数据库文件是二进制文件,不能作为 Office Open XML 格式文件打开,所以无法通过在数据库文件中添加部分来自定义 Access 功能区。Access 在自定义功能区 UI 方面确实提供了极大的灵活性。例如,可将自定义标记存储在表中、将其嵌入某个 VBA 过程、将其存储在另一 Access 数据库中或将其链接到某个 Excel 工作表。还可以为整个应用程序或特定窗体和报告指定自定义 UI。为让您了解自定义 Access UI 的过程有多么

30、轻松,让我们通过几个应用场景进行预演。注意 因为在进行这些预演的过程中要对数据库进行更改,所以您可能不希望在自己的数据库中执行这些步骤,而是希望在其他数据库(例如,Access 自带的 Northwind 示例数据库)中执行。自定义 Access 功能区 UI所有 Access UI 自定义都有一个共同点:只有通过调用唯一的功能区特定的 Access VBA 对象成员(LoadCustomUI 方法),它们所代表的功能区才能供应用程序使用。该方法的签名为:expression.LoadCustomUI(CustomUIName As String, CustomUIXML As String)

31、其中 expression 返回一个 Application 对象CustomUIName 是将与此标记关联的自定义功能区 ID 的名称CustomUIXML 包含 XML 自定义标记。通常,要创建功能区并使其可供应用程序使用,首先需要在数据库中创建一个模块,其中包含调用 LoadCustomUI 方法的过程,从而传入功能区的名称和 XML 自定义标记。如前所述,XML 标记可来自通过表创建的 Recordset 对象、来自数据库之外的来源(如必须解析为 String 的 XML 文件)或来自直接嵌入过程内部的 XML 标记。只要每个功能区的名称和组成功能区的选项卡的 id 属性是唯一的,就可

32、通过对 LoadCustomUI 方法进行多次调用,传入不同的 XML 标记来使不同的功能区可用。过程完成后,接着创建一个通过使用 RunCode 操作调用该过程的 AutoExec 宏。这样一来,应用程序启动时将自动执行 LoadCustomUI 方法,所有自定义功能区都可供应用程序使用。在应用程序启动时应用自定义功能区要实现自定义 UI 以便其在应用程序启动时可用,请执行下列操作:1.按之前所述过程操作,使自定义功能区可供应用程序使用。2.关闭应用程序,然后将其重新启动。3.单击“Microsoft Office 按钮”(“文件”菜单),然后单击“Access 选项”按钮。4.单击左侧窗格

33、中的“启动”选项,然后在“应用程序选项”部分中单击“自定义功能区 ID”并选择列表中的其中一个功能区。5.现在,请关闭应用程序,然后将其重新启动。将显示所选 UI。为窗体或报告指派自定义功能区1.按之前所述过程操作,使自定义功能区可供应用程序使用。2.在“设计”视图中打开窗体或报告。3.在“设计”选项卡上,单击“属性页”按钮。4.在“属性”窗口的“全部”选项卡上,单击“自定义功能区 ID”下拉列表,然后选择列表中的其中一个功能区。5.保存、关闭窗体或报告,然后将其重新打开。将显示所选 UI。注意 显示在功能区 UI 中的选项卡是附加选项卡。也就是说,除非专门隐藏选项卡或将 startFromS

34、cratch 属性设置为 True,否则由窗体或报告的功能区 UI 显示的选项卡将是在现有选项卡基础上增加的选项卡。为进一步说明此过程,我们来完成几个示例。返回页首创建 Access 应用程序级别自定义功能区下列步骤演示为数据库创建和实现自定义功能区的过程。开始之前,需要设置一个选项来报告执行代码时可能发生的任何错误:1.单击“Microsoft Office 按钮”(“文件”菜单),单击“Access 选项”,然后单击“视图”选项卡。2.在“在所有 Office 应用程序中,显示”部分,选择选项“报告加载项中的自定义用户界面错误”。接下来,创建一个包含自定义 XML 标记的表:3.启动 Ac

35、cess 2007。4.在“插入”选项卡上,单击“表”,然后单击“表设计”。5.在表中添加以下字段:表 2. DbRibbons 表字段定义字段名类型IDLong Integer (AutoNumber)RibbonNameTextRibbonXmlMemo6.接下来,右键单击“Table1”选项卡,然后单击“数据表视图”。7.在创建的字段中添加下列数据:表 3. DbRibbons 表数据字段名值ID(AutoNumber)RibbonNameHideDataRibbonXml<customUI xmlns=" <ribbon startFromScratch=&quo

36、t;false"><tabs><tab idMso="TabAccessEdit" visible="false" /><tab id="dbCustomTab" label="自定义选项卡" visible="true"><group id="dbCustomGroup" label="自定义组"><control idMso="Paste" label="

37、;内置粘贴" enabled="true"/></group></tab></tabs></ribbon></customUI>此标记将 startfromScratch 属性设置为 False,然后隐藏内置的“编辑”选项卡。接下来,它会创建一个自定义选项卡和一个自定义组,并在该组中添加内置的 Paste 控件。8.将表保存为“DbRibbons”,然后将其关闭。接下来,创建 VBA 模块和在启动时加载功能区的宏:9.在“插入”选项卡上,单击“高级”按钮,然后单击“模块”。10.在 Visual Basic 编辑器的“视图”菜单上,单击“属性窗口”。11.在“属性”窗口的“名称”属性文本框中,将模块的名称更改为“RibbonLoader”。12.在代码窗口中,插入下列 VBA 代码:Option Compare Datab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论