首页 > 单独文章 > 正文

在Office2007中利用COM加载项修改Fluent UI

时间:2008-04-17 09:42:37 作者:officeba 【认证】

Office2007中可以使用COM加载项来修改Fluent UI。当确定创建一个合并Ribbon定制和使用可管理代码的COM加载项时,有两种不同的选择。可以使用Visual Studio 2005提供的共享外接程序模板,创建一个标准的共享加载项。或者,如果已安装了Visual Studio 2005 Tools for Office Second Edition,可以更好地创建COM加载项。
通过Visual Studio 2005 Tools for Office Second Edition创建的加载项可以运行在单独的宿主应用程序中,并且这些加载项的编程模型更简单、更易维护。

一、使用共享的外接程序修改Fluent UI

下面的示例使用一个可管理的COM加载项在Word 2007中添加自定义UI。该加载项创建一个自定义选项卡、一个组和一个按钮,当单击该按钮时,加载项在光标的位置插入一个公司名称。

1、创建加载项解决方案

(1) 开启Visual Studio 2005。
(2) 在“文件”菜单中,打开“新建项目”。
(3) 在“新建项目”对话框中,在“项目类型”窗口,打开“其他项目类型”节点,单击“扩展性”,然后选择“共享的外接程序”。
(4) 在名称框中,输入InsertCompanyAddIn,然后单击“确定”来创建项目。
(5) 在“共享外接程序向导”的第一页,单击“下一步”。
(6) 在“选择编程语言”页,选择Visual C#或Visual Basic,然后单击“下一步”。
(7) 在“选择应用程序主机”页,清除除Microsoft Word外的所有选择,然后单击“下一步”。
(8) 在“输入名称和说明”页,在名称框中输入“InsertCompanyAddIn”,在描述框中输入“Insert Company Name”,然后单击“下一步”。
(9) 在“选择外接程序选项”页,选择“我希望在加载宿主程序的同时加载我的外接程序”,然后单击“下一步”,然后单击“完成”。
Visual Studio创建一个新的解决方案,包含两个工程——加载项本身和一个安装项目(安装项目能使您在其它用户的计算机中安装该加载项,并且使得在设计时更容易安装和卸载该加载项。)
为了与Word 2007和Ribbon对象模型相交互,添加对两类库的引用。

2、添加引用

(1) 在解决方案管理器中,展开“引用”文件夹。
如果没有看到“引用”文件夹,在“项目”菜单中,单击“显示所有文件”。
(2) 删除Microsoft.Office.Core引用。
(3) 右键单击“引用”文件夹,然后单击“添加引用”。
(4) 单击“COM”选项卡,选择“Microsoft Office 12.0 Object Library”,然后单击“确定”。
(5) 在打开的代码文件顶部,添加下面的语句到工程中。
Imports Microsoft.Office.Core
Imports Word = Microsoft.Office.Interop.Word

3、创建一个XML定制文件

(1) 在“项目”菜单中,单击“添加新项”。
(2) 在“添加新项”对话框中,选择“XML文件”,命名新的文件为Ribbon.xml,然后单击“添加”按钮。
(3) 在新的XML文件中,添加下面的XML标记。
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>
  <ribbon>
    <tabs>
      <tab id=”CustomTab” label=”My Tab”>
        <group id=”SampleGroup” label=”Sample Group”>
          <button id=”Button” label=”Insert Company Name”
            size=”large” onAction=”InsertCompanyName” />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
(4) 保存和关闭该文件。
如果将XML文件当作项目资源文件里的一段资源,则使用该XML文件更容易。

4、创建XML资源

(1) 在解决方案管理器中,选择Ribbon.xml。
(2) 在属性窗口,选择“生成操作”属性,然后在选项列表中选择“嵌入的资源”。
(3) 在“项目”菜单中,单击“InsertCompanyAddIn属性”。
(4) 在“资源”选项卡。
(5) 在“解决方案管理器”中,拖放Ribbon.xml到资源设计面中。
这项操作创建一个新的基于文件的资源,包含XML内容。现在,Ribbon.xml文件作为应用程序资源自动存储,并且通过使用Visual Basic或Visual C#语言功能获取该内容。
(6) 关闭资源窗口。当出现提示时,单击“是”来保存这些资源。

5、访问宿主应用程序并处理Ribbon

(1) 在解决方案管理器中,右键单击“Connect.cs”或“Connect.vb”,然后单击“查看代码”。
(2) 找到已存在的applicationObject变量声明,对其进行修改以引用Word.Application对象。即修改该声明如下面的代码所示。
Private applicationObject As Word.Application
(3) 修改OnConnection方法中已存的的第一行,创建Word.Application对象的一个实例。
applicationObject = DirectCast(application, Word.Application)
(4) (对Visual Basic)修改类顶部以Implements开始的代码行,添加对实现IRibbonExtensibility命名空间的支持。Visual Basic自动地插入GetCustomUI过程。
Implements Extensibility.IDTExtensibility2, IRibbonExtensibility
(5) (对C#)在public class Connect:语句的结尾处,添加一个逗号,然后输入下面的接口名称。
IRibbonExtensibility
(6) (对C#)右键单击刚添加的接口,单击“实现接口”,然后单击“显式实现接口”,这将添加唯一的IRibbonExtensibility接口成员:GetCustomUI。
(7) 修改GetCustomUI方法,其代码如下所示。
Public Function GetCustomUI(ByVal RibbonID As String) As String _
  Implements Microsoft.Office.Core.IRibbonExtensibility.GetCustomUI
  Return My.Resources.Ribbon
End Function

注意:GetCustom应该被执行来返回Ribbon定制的XML字符串,不应该用于初始化。特别地,不应该企图显示任何对话框或消息窗体在GetCustomUI执行中。初始化更合适的地方在OnConnection方法(为共享的外接程序)或ThisAddIn_Startup方法(使用Visual Studio 2005 for Office Second Edition创建)。
(8) 在类中添加下面的方法,该方法插入公司名称到当前光标所在位置的文档中。
Public Sub InsertCompanyName(ByVal control As Office.IRibbonControl)
  ‘ Inserts the specified text at the current location
  ‘ in the document.
  Dim companyName As String = “Microsoft Corporation”
  applicationObject.Selection.InsertAfter (companyName)
End Sub
(9) 在“文件”菜单中,单击“全部保存”。
(10) 如果正在运行则退出Word2007。
(11) 在“生成”菜单中,单击“生成解决方案”。
(12) 在解决方案管理器中,右键单击“InsertCompanyAddInSetup”,然后单击“生成”。
(13) 右键单击“InsertCompanyAddInSetup”,然后单击“安装”。出现“InsertCompanyAddIn安装向导”。
(14) 单击每页中的“下一步”,然后在最后屏幕中单击“关闭”。
(15) 开启Word。此时,“My Tab”选项卡出现在其它选项卡的右侧。
(16) 单击“My Tab”,然后单击“Insert Company Name”。Word在文档光标位置处插入指定的公司名称。
(17) 退出Word。
(18) 在Visual Studio的“解决方案管理器”中,右键单击“InsertCompanyAddInSetup”,然后单击“卸载”。


相关文章

同类最新