滴水静禅天
扫描关注滴水静禅天

扫码加微信:-)

利用VSTO实现Word自动化

滴水静禅天2017-08-04信息计算 1468

利用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的寻找对象为该该研究范围.定义关键字为开封”.遍历该段文字执行搜索,如果找到则发出提示,且更改字体.效果如下:

 

 

发表评论