使用vb编程时,有时需要调用microsoft word对文字进行编辑、排版及输出。为实现这种调用,可以使用shell函数、ole自动化、在包容器中嵌入word对象等方法。经过试用和比较,总结出了这几种方法的各自特点。
1 使用shell函数直接调用
语法:shell (pathname[,windowstyle]).pathname是指要执行的程序的名字和任何必须的参数或命令行开关,可以包括目录和驱动器名;windowstyle是执行程序的窗口风格的数字。
使用shell调用word比较简单,编程量小,但必须明确指定word所在路径,这不利于移植,而且,不能对word进行控制,不利于程序和word之间的数据交换。
2 使用ole自动化控制microsoft word
2.1 使用方法
(1)word为ole自动化提供一种称为“basic”的对象,要在vb中控制word ,首先要定义一个引用word中“basic”对象的对象变量:dim wordobj as object
(2)将word 中的“basic”对象赋给该对象:set wordobj=createobject("word.basic")
(3)可以使用大多数wordbasic语句和函数控制word或word文档,使用方法和在word宏中使用wordbasic指令的方法基本相同。
(4)关闭word:set wordobj =nothing。
注意:“basic”对象不支持关闭它自己的一个方法。即若在ole自动化中关闭了word,则对象被置为nothing,便不能再对对象进行操作,程序出错。
2.2 vb指令与wordbasic指令的差异
(1)有一些语句和函数不能使用,包括:控制结构,如while…wend和if…then…else;声明语句,如dim;定制对话框相关的语句:fileexit语句;要求数组变量作为参数的语句或函数。
(2)也有一些指令使用方法不同。①返回字符串以一个美元符($)结束的wordbasic函数的关键字必须括在方括号中。例如,在wordbasic宏中的getbookmark$()语句:mark$=getbookmark$("address"),若用vb调用,必须这样写mark$=wordobj.[ge-tbookmark$]("address")。②选择一个命令按钮用“true”,不选择用“false”
2.3 对ole自动化的说明
word可以为ole自动化给另一个应用提供对象,但是它不能使用ole自动化访问其它应用中的对象。例如:vb和excel可以使用ole自动化访问word,但是word不能使用ole自动化访问它们。
3 在包容器中嵌入word对象
在vb中,要访问在包容器中嵌入的word对象,首先要在项目中插入对象。做法如下:在窗体中插入ole控件,对象类型选择“microsoftword图片”或“microsoft word文档”,再按“确定”。
然后用object属性访问文档或图片,并使用wordbasic语句和函数作用于它。嵌入的对象必须在可被访问之前被激活,可以使用action属性激活ole控件。例如,使用下面指令访问一个嵌入在称为ole1的ole控件中的文档:
dim wordobj as object
ole1.action =7
set wordobj =ole1.object.application. wordbasic
其他方面,使用方法同ole自动化。使用在包容器中嵌入的word对象,word显示的窗口大小、位置与ole控件定义的大小、位置相同,而且工具栏显示位置与word脱离。这一点与ole自动化相比,是个不足。
总之,要想在microsoft visual basic中控制microsoft word,最好使用ole自动化,通过使用wordbasic指令对word进行全面控制,而且,用户使用起来与使用microsoft word一样,非常方便