WPS Office2007下载
首页 >> 技术文章 >> Office2007综合


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



二、使用Visual Studio 2005 Tools for Office Second Edition工程修改Fluent UI

下面的示例介绍如何创建与前面示例相同的加载项,但这次使用Visual Studio 2005 Tools for Office Second Edition。

1、创建项目

(1) 开启VSTO。
(2) 在“文件”菜单中,选择“新建项目”。
(3) 在“新建项目”对话框,选择Visual Basic或Visual C#。
(4) 在“项目类型”窗格,展开Office节点,选择“2007外接程序”。
(5) 在“模板”窗格,选择“Word外接程序”。
(6) 在名称框中输入“InsertCompanyAddIn1”,然后单击“确定”创建新的加载项。
Visual Studio创建了一个的解决方案,包含两个项目:加载项自身和安装项目。(安装项目能够在其它用户的计算机上安装加载项,并且使得在设计时安装和卸载加载项更容易。)
注意,虽然新加载项实现IExtensibility2接口,但不会看到该接口所需要的过程。相反VSTO创建名为ThisAddIn的简单的类,提供可能需要的过程。可以在ThisAddIn_Startup方法或ThisAddIn_Shutdown方法中添加代码。对于本例,不需要在这些方法中添加代码,也不需要修改代码或设置引用来创建加载项,所有的连接工作都已经完成了。

2、添加Ribbon扩展项

(1) 在“项目”菜单中,单击“添加新项”。
(2) 在“添加新项”对话框中,选择“功能区支持”。
(3) 接受缺省名称(Ribbon1.vb或Ribbon1.cs),单击“添加”按钮。
该模板添加一个名为Ribbon1.xml的XML文件,以及在工程中添加了一个新类。该XML文件包含一个非常简单的自定义UI。这个新Ribbon1文件包含ThisAddIn类的可以注释掉的扩展,以及一个名为Ribbon1的新类。
(4) 在解决方案管理器中,双击Ribbon1.xml,在XML编辑器中打开该文件。
(5) 如下所示修改这个已存在的XML。
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui” onLoad=”OnLoad”>
  <ribbon>
    <tabs>
      <tab id=”CustomTab” label=”My Tools Tab”>
        <group id=”SampleGroup” label=”Sample Group”>
          <button id=”Button” label=”Insert Company Name”
            size=”large” onAction=”InsertCompanyName” />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
(6) 保存该XML文件并关闭XML编辑器。
如果将该XML文件当作项目的资源文件里的一个资源,则最容易使用该文件。

3、创建XML资源

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

4、修改Ribbon代码并完成该加载项

(1) 在解决方案管理器中,右键单击Ribbon1.vb或Ribbon1.cs,然后单击“查看代码”。
(2)  在代码编辑器中,选择名为ThisAddIn的局部类,并取消该类的注释。
RequestService过程启用VSTO运行,确定处理加载项的Ribbon定制的回调。如果这个过程被传递GUID与IRibbonExtensibility接口一致,如果有则返回其IRibbonUI实例,如果没有,则传递控件到其基础类的RequestService方法。
注:缺省情况下,RequestService方法出现在注释中,因为加载项可能已包括了该方法的重载(可能为FromRegionStartup接口,或者其它新的可扩展接口。)如果是这种情况,则可以从注释的代码中复制if块到该方法已存在的重载中。
(3) 在Ribbon1类中,修改GetCustomUI过程,以便其从Ribbon1资源中返回XML,而不是调用加载项的GetResourceText过程。
Return My.Resources.Ribbon1
注:该加载项模板在Helpers隐藏区域里,包括一个名为GetResourceText的过程,获取XML文件的内容。虽然该过程做您需要的工作,但需要将资源的名称指定为一个字符串。这项技术有时较脆弱(对资源名称的改变将仍允许代码编译,但加载项在运行时将失败),因此最好添加XML内容到资源文件中并使用指定的语言来获取资源,正如上面的步骤所述。该模板包括GetResourceText过程,以便所见即所得——当创建和建立一个加载项时,有一个正工作的Ribbon定制而无须任何变化。
(4) 在Ribbon1类中,添加公共的变量声明,引用Word.Application对象。
Public Application As Word.Application
(5) 在相同文件的ThisAddIn局部类中,在创建Ribbon1类的实例的代码行下面,添加代码设置Ribbon1类的Application属性。
‘ In the RequestService method:
ribbon.Application = Application
此处的代码为:
        If serviceGuid = GetType(Office.IRibbonExtensibility).GUID Then
            If ribbon Is Nothing Then
                ribbon = New Ribbon1()
                ‘ In the RequestService method:
                ribbon.Application = Application
            End If
            Return ribbon
        End If
(6) 在Ribbon1类中添加下面的过程,以便可以为Ribbon中新的按钮处理onAction回调,在文档的光标处插入公司名。

5、测试该加载项

(1) 在“打开”菜单中,单击“全部保存”。
(2) 按F5运行项目,将开启Word 2007。
(3) 单击“My Tools Tab”选项卡,然后单击“Large Button”。代码将在文档的光标位置插入公司名称。
(4) 退出Word2007


 
可以创建安装项目并安装该加载项,就像前面的示例中所介绍的。在本例中,VSTO使得加载项更容易运行(和调试)。按F5键,项目会像所预料的一样运行。可以使用共享的外接程序模板来获得相同的行为,只需设置项目属性以表明在按F5时想要运行的应用程序,并选择正确的Office应用程序。


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

第1页 | 第2页

时间:2008-4-17 9:42:37,点击:0打印】【关闭

上一篇:Office2007 用户界面(UI)的定制(六)
下一篇:Office2007 用户界面(UI)的定制(八)

OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office吧自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,联系邮箱:thinkou@126.com,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

查看所有评论内容

评论内容