基于VB的Word文档检测
2014-08-15蒋玲玲
蒋玲玲
(武汉船舶职业技术学院公共课部,湖北武汉 430050)
随着科学技术的迅猛发展,人们的生活、工作、学习等各种社会领域,都离不开计算机。因此,为了培养能够熟练的使用计算机且能够将计算机与本职工作相结合的复合型人才,各高职院校都将《计算机应用基础》这门课作为非计算机专业学生的掌握计算机基础知识和操作技能的一门必修课程。该课程的内容主要包含计算机基础知识,Windows系统的基本操作以及Office办公软件的使用。在笔者所在院校,通过全国计算机信息高新技术考试考核学生的学习情况,由于该等级考试没有通用的模拟系统,学生的日常练习受到限制,因此笔者使用VB(Visual Basic)开发了一套模拟系统,以供学生日常的练习,在开发中,遇到了很多有关Office检测的问题,本文就针对检测word文档中的艺术字的检测问题进行分析讨论。
1 基于VB的office应用程序开发介绍
VB是开发程序中最为简单易学的一种程序设计语言,该语言功能强大,易于学习掌握,尤其是基于微软提供的ActiveX技术,该技术由微软的Office应用程序进行支持,给出了对 Word、Excel等Office应用程序进行操作的内置功能的方法,能够直接对word、excel等office文档进行操作,如进行拼写检查,对文档中的内容进行检测操作等。
2 VB中的Word对象模型
VB中的Word对象模型代表一个 Word元素,可以是一个文档、一个段落或者是一个单一的字符。在使用VB对Word进行调用之前,需要引进Word对象库,之后才能够以 Word为对象编程。引进Word对象库的方法是:在编程环境下,选择“工程”菜单,选中“引用”项,打开“引用”对话框,在“可用的引用”列表中选中“Microsoft Wordl1.0Object Library”,即可在 Word中引进对象库。在本文中主要用到以下几个对象。
(1)Application对象(Word应用程序的总对象)。
用户在启动一个Word对象的时候,Application对象也同时被创建。通过Application对象的属性,用户能够调整 Word对象模型的一些特性。
(2)Doctuments对象(文档集对象)。
通过对Documents对象的使用,用户能够返回一个打开的Office文档。打开方式如以下示例。
Set mWord= Documents("XXX.doc")
在该示例中,通过语法Documents(FileName)得到一个返回的对象,FileName可以是打开的文档名称,也可以是一个索引号,在上面的示例中,变量mWord包含了一个Document对象,这个对象可以代表一个已经被打开的名称为XXX.doc的 Word文档。
(3)Selection对象(选中区域对象)。
在用户对Word文档进行操作时,一般会先选中一段文字,然后执行某一操作,比如将选中文字设置为艺术字,或者是设置选中文字的格式。在VB中,不需要在对文字编辑之前选中待编辑文字,而是通过创建一个能够代表文档特定部分的Range对象,然后对该对象进行各种编辑操作。但是这样不能对用户想要选定的部分进行操作,这个时候,可以通过Selection对象来完成该操作。在文档窗口的每个窗格中只能有一个Selection对象,在任何时刻,也只能有一个活动的Selection对象。选定内容可以包含文档的一块区域,也可以被折叠到一个插入点。以下是一个Selcetion对象示例。?
Selection.TypeText(Text:= "你好!")?
在该示例中,通过Selection对象,在光标处插入了“你好!”三个字符。
(4)InlineShape对象。
该对象代表文档的文字层中的对象,该对象被看做字符,可以像字符一样放在一行文本当中。InlineShape?对象是?InlineShapes?集合中的一个成员。InlineShapes?集合包含文档、区域或选定内容中的所有嵌入式图形,通过使用?InlineShapes?(index)方法可以得到一个Inline-Shape?对象返回值。
(5)Shape控件。
在Word或者Excel中,都能够通过插入Shapes控件,来满足用户对各种界面进行绘图的操作需求。每个图形的大小都可以改变,或者对图形进行旋转。当图形被选中时,图形会有一个重置大小的句柄,您可以使用它来进行大小的调节,以此同时还有一个角度句柄,可以用来调节图形的角度、颜色、阴影、透明度等。
3 使用VB对WORD文档中的艺术字检测实例
(1)首先在程序中声明一个Shape对象变量,通过该对象可以检测艺术字的字体、字号、环绕方式等。然后声明 Word对象变量,将MWapp变量设置为 Word.application对象,VB可通过Word对象库对Word.application进行定义。
Dim Mshape As Shape
Dim MWapp As Word.application
Set MWapp= CreateObject("Word.Application")
(2)打开word文档对象,在本文案例中,通过Documents引用打开Word文档。
wrdApp.Documents.Open FileName
FileName表示打开的word文档的路径以及word文档的名称。
(3)通过For Each In语句对打开的Word文档进行遍历,判断word文档中是否存在艺术字。
For Each shp In wrdApp.Documents(FileName).Shapes
If shp.Type= msoTextEffect Then
End If
Next
在上面的示例中通过对Word文档对象的Shapes子对象进行遍历,对Word文档中的文字进行检测,如果遍历到的文字的Type属性为艺术字,就继续进行下一步的判断,在代码中mso-TextEffect属性表示该文字为艺术字。
(4)判断该艺术字是否符合题目要求。
If shp.TextEffect.Text="XXXX"Then
If shp.TextEffect.FontSize= 40# Then…
If shp.TextEffect.FontName = "隶书"Then…
If shp.TextEffect.PresetShape = mso-TextEffectShapeWave2
End If
在上面的示例中首先通过TextEffect.Text属性判断设置的艺术字的文字内容是否与题目相符合,如果与题目要求符合,继续向下检测,在本文案例中,通过TextEffect的FontSize属性、FontName属性 和PresetShape属性检测了艺术字的字号、字体和艺术字的形状。
4 结 语
本文介绍了在VB平台下,基于ActiveX技术,通过调用Word应用程序提供的对象,实现了对Word中艺术字的检测,并给出了具体实现方案。在本文中,笔者只是仅仅给出了一个简单的使用VB对word文档进行操作的案例,并没有针对基于VB对office文档的应用进行介绍。事实上ActiveX技术还有许多其他强大的功能,因为篇幅有限,不能全部介绍。
1 岐艳芳.VB创建Word格式化文档[J].兰州工业高等专科学校学报,2006.
2 苏瑞,韩中孝.Visual Basic开发实用编程200例[M].北京:中国铁道出版社,2006.
3 张德强,李云岭,易向东,等.Visual Basic案例开发[M].北京:中国水利水电出版社,2005.
4 赵欣胜,亢惠娟,刘晨宏,等.Visual Basic经典范例50讲[M].北京:科学出版社,2004
5 隋丽娜.Visual Basic范例开发大全[M].清华大学出版社,2010.