ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8621|回复: 16

[分享] VSTO开发示例:基于vb.net的功能区 XML 创建Word外接程序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-19 20:07 | 显示全部楼层 |阅读模式
题外话:
由于Word块沿未开通VSTO,故在些版块发帖


VSTO开发示例:基于vb.net的功能区 XML 创建外接程序
一、环境准备
本例创建环境:Windows764位)+office2013+VS2015
二、创建项目
1、创建名为WordRibbon 的“Word 外接程序”项目,如下图所示。
image001.png
image003.png


TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 20:16 | 显示全部楼层
二、创建 VSTO 外接程序选项卡

   创建“外接程序”选项卡,请将“功能区(XML)”项添加到项目中。同时向此选项卡添加一些按钮。

  • 在“项目”菜单上,单击“添加新项”。如下图所示:
  • image005.png
  • 在“添加新项”对话框中,选择“功能区(XML)”。如下图图所示
  • image006.png

    • 将新功能区更名为“WordRibbon”,然后单击“添加”。

    WordRibbon.vb 文件将在设计器中打开。还会将名为WordRibbon.xml XML 文件添加到项目中。
    • 在“解决方案资源管理器”中,右键单击 ThisAddin.vb,然后单击“查看代码”。
    • 将下面的代码添加到 ThisAddin 类中。

    • ProtectedOverrides Function CreateRibbonExtensibilityObject() As Picrosoft.Office.Core.IRibbonExtensibility
    • ReturnNew WordRibbon()
    • End Function
      如图所示

  • image008.png
  • image010.png
  • image012.png


TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 20:21 | 显示全部楼层

三、将按钮添加到“外接程序”选项卡

1、在“解决方案资源管理器”中,右键单击 WordRibbon.xml,然后单击“打开”。
image013.png
image015.png



<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab idMso="TabAddIns">
        <group id="MyGroup"
               label="My Group">
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

替换后的内容为

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab id="henrylam" label="我的测试">
        <group id="test"
               label="测试">
          <button id="Button1"
                  label="插入文本"
                  size="large"
                  imageMso="HappyFace"
                  onAction="test1" />
          <button id="Button2"
                  label="关于"
                  size="large"
                  imageMso="AnimationTransitionGallery"
                  screentip="使用说明"
                  supertip="鼠标放在上面显示使用说明"
                 onAction="test2" />
        </group >
      </tab>
    </tabs>
  </ribbon>
</customUI>




TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 20:29 | 显示全部楼层

四、添加按钮的回调方法

1、在“解决方案资源管理器”中,右键单击Ribbon.vb,然后单击“打开”。

2.将以下代码添加到WordRibbon.vb文件的顶部。  此代码将为Microsoft.Office.Interop.Word命名空间创建别名


Imports Word =Microsoft.Office.Interop.Word ‘命名空间创建别名


插入后如下图
image017.jpg



3、将以下方法添加到 WordRibbon 类。  这是“插入文本”按钮的回叫方法,用于在光标的当前位置向活动文档添加字符串。
    PublicSub test1(ByVal control As Office.IRibbonControl)
       Dim currentRange As Word.Range =Globals.ThisAddIn.Application.Selection.Range
       currentRange.Text = "我通过ribbon功能区插入文字"
    EndSub

插入位置如下图
image019.jpg


插入后的如下图


image020.png




TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 20:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

五、测试 VSTO 外接程序

1.按 F5 运行项目。或
image022.png

2.确认“我的测试”选项卡在功能区上可见。
3.单击“我的测试”选项卡。
4.确认“测试”组在功能区上可见。
5.单击“测试”组中的“插入文本”按钮。
在光标当前位置向文档添加一个字符串。
6.单击“测试”组中的“关于”按钮。
会弹出一个对话框如下图
image023.png




TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 20:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 21:02 | 显示全部楼层
帖子文档
VSTO开发示例(vb.net).rar (667.58 KB, 下载次数: 153)

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-19 21:05 | 显示全部楼层
示例文件
WordRibbon.rar (188.68 KB, 下载次数: 153)

TA的精华主题

TA的得分主题

发表于 2017-3-21 14:04 | 显示全部楼层
能不能用VB.net实时捕获word中刚刚输入的文字或单词?

TA的精华主题

TA的得分主题

发表于 2019-1-19 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
太好了,新手一直摸不到门道,C#的“功能区(可视化设计器)”直接就能在word中生产选项卡,VB的“功能区(XML)”还要手动添加一段代码,看了你这个帖子终于让选项卡出现在word中了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 07:23 , Processed in 0.050878 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表