利用VSTO实现Word自动化 |
副标题 |
摘要:本章主要聚焦微软Word自动化上,首先检视有关驱动自动化过程的一些关键对象的响应。然后,编写有关诸如文本格式化和搜索等一般任务的代码,继而讨论有关事件和工具条和菜单自定义项。最后再调用一些控件操作。 |
1. Word中关键的引用对象 |
VSTO文档是准应用,因为文档可以执行.NET程序集中一些关键应用对象的代码。但是,在一般印象中文档就如同最简单的记事本文件。但是与记事本不同,微软Word被精心设计,使其具有通过对其中一些继承对象重定义,通过操作这些对象可以自动化的执行文档的整个范围。其对象继承关系见下图,有图可见对象架构简介明了便于学习,同时架构的强大和柔性可以满足任何需求的使用。 |
1.1 ThisApplication实例化 |
这其中最重要的对象莫过于ThisApplication实例化,这个对象用来实例化一个可以执行的Word应用。该对象的实例化可以使若干Word关键对象处于可用状态。另外,该对象还会暴露一些方法和属性来对Word应用的一般信息进行设置。 |
※Tips※:解决由于没有设置好VBA签名所导致的”Anerroroccurredwhilesigning指定了无效的提供程序类型”型错误.首先,打开Word中的宏许可.然后在Office的安装目录找到SELFCERT.EXE自签名程序进行一个签名许可的生成,最后在VS的项目属性的签名中选择”selectformstore”即可. |
[C#代码] privatevoidThisAddIn_Startup(objectsender,System.EventArgse) {
objectfilename=@"C:\setup.log"; Word.Document,mydoc=this.Application.Documents.Open(reffilename,refmissing,refmissing, refmissing,refmissing,refmissing, refmissing,refmissing,refmissing,refmissing,refmissing, refmissing,refmissing,refmissing,refmissing,refmissing); mydoc.AddToFavorites(); mydoc.Kind=Word.WdDocumentKind.wdDocumentLetter; mydoc.ShowSpellingErrors=true; } |
上面一段简单的命令用来执行用Word打开C:\的setup.log文件,同时给这个实例化进行添加收藏,给该文档设置为信纸格式,以及在文档中进行拼写检查属性. |
1.2 使用Range对象 |
Range对象是Word继承对象中最流行的对象,它可以在文档表面来定义一个连续的文本区块.Range对象非常柔性甚至可以允许依次标出若干个该对象.下面看例子: |
本例实现了”如果该文档的段落存在,定义一个range=最大段落数那一段的全部在该区间定义一个单句,改句子是该区间的第二句,如果改句子不为空且改句子有内容 且该句子字数存在遍历该句子的全部文字如果包含有"documents"这个字,那么把该字给删除了.在该字处插入document's,改变字体等属性.”的效果. |
|
文档的第一段中有”开封”二字,下边通过一段代码来实现找出”开封”二字是否存在,如果存在则弹出对话框,并且对这两个字进行格式化修改. |
首先定义本文第一段为研究范围,然后定义Word的寻找对象为该该研究范围.定义关键字为”开封”.遍历该段文字执行搜索,如果找到则发出提示,且更改字体.效果如下: |
咨询电话
0371-68632068