IT之家学院:用微软VS2017为Word开发加载项——入门教程

  • 时间:
  • 浏览:1
  • 来源:大发快3_快3彩票app_大发快3彩票app

感谢IT之家女女网友见面 一道残阳铺水中的原创投稿

Word是原来亲戚亲戚亲戚亲戚朋友平时办公中最常用的文字处里软件之一,其功能包罗万象,十分强大。但不排除已经 用户有独特而专有的需求,Word自带的功能并还不都都可否 了考虑到,要由用户手动操作若干步方能完成。有有哪些操作有时发生复用的价值,还不都都可否 了不妨把它们抽象并固定下来,变成Word里的一项功能吧。

对于简单的操作复用,亲戚亲戚亲戚亲戚朋友还不都都可否 通过内置的宏或VBA来实现。Word中甚至还提供了“录制宏”的功能,来降低编写代码的门槛。不过宏和VBA有个缺点,即还不都都可否 了利用Ribbon栏。(有同学说过还不都都可否 使用XML映射来实现,但我没试过。)而开发原来加载项,可能性说VSTO外接线程,就还不都都可否 克服你這個 缺点。

今天,亲戚亲戚亲戚亲戚朋友就来编写原来简单的VSTO外接线程,作为入门。

一、安装Visual Studio 2017,并在安装时确保选中Office/SharePoint你這個 选项。

二、打开VS2017,新建项目。分别选中Visual Basic→Office\SharePoint→Word 2013和2016 VSTO外接线程。(选用 VB是可能性其语法与VBA的语法类式,学过VBA的同学还不都都可否 马上上手,当然选用 C#也是还不都都可否 的。严格来说,此处的VB指的是VB.net,而VBA则基本继承VB6.0,两者的语法在已经 地方还是有很大区别的。)为你這個 项目起个名字,比如WordAddInTest。

三、新建项目后,呈现在转过身的是ThisAddIn.vb里的内容,亲戚亲戚亲戚亲戚朋友稍后再来关注它。现在先来创造原来Ribbon界面。通过处里方案资源管理器加上原来新项,类型则选用 “功能区(可视化编辑器)”,原来 亲戚亲戚亲戚亲戚朋友就得到了原来新的涵盖空组的Ribbon栏。

四、接下来,已经 “搭积木”时间了。亲戚亲戚亲戚亲戚朋友还不都都可否 看到,在工具栏中老出了已经 Ribbon控件,它们分别是Box、Button、ButtonGroup、CheckBox、DropDown、EditBox、Gallery、Group、Label、Menu、Separator、Tab、ToggleButton。

现在就对有有哪些控件做已经 简单的介绍。

1.容器控件:Tab、Group、Box和ButtonGroup。

a.Tab是选项卡,可能性你希望使用不止原来选项卡,我能 拖放原来新的Tab。

b.Group是选项组,通常原来选项卡由若干个选项组组成。有时选项组右下角会标有原来灰色箭头,单击它能启动原来窗体。你這個 窗体的启动还不都都可否 通过Group的DialogLauncher来实现。

c.Box(不可见)是用来排列具体的控件的,还不都都可否 使控件横向可能性纵向排列,目的是使界面井然有序。

d.ButtonGroup(不可见)则是专为排列按钮而发生的,已经 还不都都可否 了是横向排列。

2.不可操作控件:Label和Separator。

a.Label即标签,是用来显示提示性文本的。

b.Separator即分割线,它还不都都可否 用来发生同原来选项组中而功能又有所区别的控件或控件组。

3.单一控件:Button、CheckBox、CombolBox、DropDown、EditBox和ToggleButton。

a.Button是最普通的按钮,还不都都可否 通过单击它执行已经 操作。

b.CheckBox是复选框,还不都都可否 用它来打钩。

c.CombolBox是组合框,还不都都可否 用它来输入文本或从下拉列表中选用 。

d.DropDown是下拉框,无法向它输入文本,还不都都可否 了从列表中选用 。

e.EditBox是编辑框,还不都都可否 用它来输入文本。

f.ToggleButton是类式开关的按钮,按钮在按下(呈现深色)时,是一种清况 ;松开时(恢复浅色)又是一种清况 。

4.复合控件:Gallery、Menu和SplitButton。

这原来控件的作用比较类式,完整篇 完整篇 都是能生成下拉选项供用户选用 。Gallery的特点是还不都都可否 在下拉选项的一行中横向排列项目,且一种还不都都可否 了被用作按钮响应单击事件;Menu一种之都可否 用作按钮;而SplitButton则还不都都可否 相应单击事件。

亲戚亲戚亲戚亲戚朋友来看一张有有哪些控件的示意图,就容易明白了。

五、做完界面之前 ,就还不都都可否 着手编写代码了,但在开发具体的功能前,亲戚亲戚亲戚亲戚朋友要先写已经 必需的代码,为后续的工作铺路。

1.新建原来标准模块,用来存放公共的数据。亲戚亲戚亲戚亲戚朋友把你這個 模块命名为mdlPublic。

定位到Module mdlPublic的下一行,声明Application接口,为了简便,就叫App吧。

Module mdlPublic

Public App As Word.Application

End Module

2.回到第三步中提及的ThisAddIn.vb文件中,定位到Private Sub ThisAddIn_Startup() Handles Me.Startup的下一行,对接口App进行实例化。

Private Sub ThisAddIn_Startup() Handles Me.Startup

App = Globals.ThisAddIn.Application

End Sub

这段代码的意思是,在加载项启动时(Word显示启动画面时,正是加载项启动的之前 ),获取当前运行的Word实例,并赋值给尚未实例化的接口App。这跟开发具体的功能有很大的关系,可能性亲戚亲戚亲戚亲戚朋友要通过你這個 接口来对Word文档进行操作。

好了,路可能性铺好了,熟悉VBA的同学马上就还不都都可否 已经 人玩儿去了,假若把VBA中的Application完整篇 改成这里的App就还不都都可否 了。不过还是来看简单的原来例子。

当亲戚亲戚亲戚亲戚朋友从网页等地方qq克隆好友 文本时,有完整篇 都是伴随着几瓶讨厌的空行,下面亲戚亲戚亲戚亲戚朋友就通过代码来去除有有哪些空行。

1.在Ribbon栏放满置原来按钮,更改名字为btnDeleteEmptyLine,标题为“删除空行”。已经 在设计界面时双击它,进入代码编辑模式。

2.为了编写代码的便利,在首行先引入原来命名空间。

Imports Microsoft.Office.Interop.Word

3.已经 编写如下代码,以实现具体的功能:

Private Sub btnDeleteEmptyLine_Click(sender As Object, e As RibbonControlEventArgs) Handles btnDeleteEmptyLine.Click

If App.Selection.Start = App.Selection.End Then App.ActiveDocument.Select()

With App.Selection.Find

.ClearFormatting()

.Text = "^p^p"

.MatchWildcards = False

.Forward = True

.Replacement.ClearFormatting()

.Replacement.Text = "^p"

.Execute(Replace:=WdReplace.wdReplaceAll)

End With

End Sub

3.单击VS工具栏上的启动按钮,片刻后Word就启动了,刚始于调试过程。亲戚亲戚亲戚亲戚朋友还不都都可否 测试代码是是不是按预期工作。

你這個 例子其实是调用了Word的查找替换功能来实现删除空行的目的,用VBA不都都可否 完成。

还不都都可否 了VSTO相较于VBA,其优越性体现在哪里呢?我认为有以下十几只 方面:

1.VSTO还不都都可否 用最新的VS以VB.net和C#等语言进行开发,而VBA基于老旧的VB6.0,不光是语法,连开发环境都几乎照搬,代码会写得很不舒服。

2.VBA是存储在文档中的,还不都都可否 了做到功能与文档的分离;而VSTO还不都都可否 做到。而Office移动版会拒绝打开涵盖宏和VBA的文档,给人带来不便。

3.VSTO还不都都可否 使用.net Framework提供的充足的类库,轻松地实现五花八门的功能,相对来说,用VBA实现就比较麻烦。

4.与VB6.0一样,VBA对Unicode的支持不良,无法读取以UTF-8、UTF-16等编码的文本,只支持以系统默认代码页(ANSI)编码的文本;而VSTO根本还不都都可否 了你這個 什么的什么的问题 。

当然VBA相较于VSTO唯一的优点是轻便,由Office线程内置,而开发VSTO外接线程要安装VS。而综合来看,肯定是VSTO的潜力要优于VBA的。

好了,入门就到这里了,亲戚亲戚亲戚亲戚朋友已经 人玩去吧!