怎样在VB中控制WORD

使用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一样,非常方便。

时间: 2024-12-03 10:16:07

怎样在VB中控制WORD的相关文章

VB中调用Word拼写检查

VB 中调用 Word 拼写检查 Function CheckSpell(IncorrectText as string) as stringDim Word As Object, retText$On Error Resume Next' 建立对象并打开 WORDSet Word = CreateObject("Word.Basic")' 把需要检查的 STRING 放到 WORDWord.AppShowWord.FileNewWord.Insert IncorrectText' 运

在应用程序中控制Word 97的运行

首先必须在编制自动化客户程序时使其头文件中包含文件ComObj.hpp,写入#include <ComObj.hpp>.编程工具C++ Builder的开发者把调用Word 97自动化对象的功能大致包装成了几个Ole object class函数,应用程序设计人员可以很方便地利用它们. * 设定Ole对象的属性: OlePropertyGet(propname) OlePropertySet(propname,value) 其中value是任何可以转换为Variant型的值 * 调用Ole对象

jacob操纵word文件中控制行间距的问题

问题描述 jacob操纵word文件中控制行间距的问题 代码如下:如果参数lineSpace=4;及行间距设为固定值,但在word中设为固定值后, 还要设置一个磅值,请问在下面代码中如何设置磅值?或者有大侠知道磅值的参数名称是什么? /** * 对当前段落进行格式化 * * @param align * 设置排列方式 默认:居左 0:居左 1:居中 2:居右 3:两端对齐 4:分散对齐 * @param lineSpace * 设置行间距 默认:1.0 0:1.0 1:1.5 2:2.0 3:最

VB中通过WMI控制DNS服务器,可在ASP中调用

dns服务器|控制 在VB中要使用Scripting API for WMI,必须引用 Microsoft WMI Scripting V1.1 Library 下面介绍Scripting API For WMI的几个对象 SWbemLocator--用于取得SWbemServices对象,他代表了本地或远程计算机上名字空间的一个连接.SWbemService--代表名字空间的一个连接,可用于处理它的部件SWbemObject--代表一个单独的类定义或一个对象实例SWbemOjbectSet--

教你控制Word中的多级列表

控制Word的自动编号或是多级列表,对于很多人来说,也许一直以来都是非常头痛的问题.今天我们就来说说,如何正确控制自动编号/多级列表功能. 我们在这里就说说"最难"的多级列表吧,掌握了多级列表,自动编号就显得简单多了. 首先,单击Word中的多级列表按钮 ,并且选择"定义新的多级列表-" . 然后,我们在弹出的对话框中,设置每一级别的编号具体样式,例如,第三级我们使用阿拉伯数字"1,2,3"这种样式,然后在"输入编号的格式"字

word文档-如何用VB语言提取word里面的词语放入数组中

问题描述 如何用VB语言提取word里面的词语放入数组中 请问,假如有一个word文档每一行有一个词语,如何用VB语言提取每一行的词语,放入一个数组中,用逗号隔开...形成如BJ"XX,XX,XX"这种形式,然后在VB中使用该数组...谢谢..拜托了...

vb编程-vb编写让word文件在AxWebBrowser中打开

问题描述 vb编写让word文件在AxWebBrowser中打开 只能弹出打开,无法在框内显示mypath = Directory.GetCurrentDirectory() AxWebBrowser1.Navigate(mypath & ""章节文件1.docx"")该如何操作

C#如何控制word某段文字隐藏或显示

问题描述 //word文档中有两段文字如下:/*1.我是第一段文字我是第一段文字我是第一段文字我是第一段文字我是第一段文字我是第一段*//*2.我是第一段文字我是第二段文字我是第二段文字我是第二段文字我是第二段文字我是第二段文字*/ 在C#中如何使用Microsoft.Office.Interop.Word.Application控制某段文字隐藏或显示. 解决方案 解决方案二: 解决方案三:高手们来看看吧解决方案四: 解决方案五:首先,我才疏学浅不知道word有隐藏这个功能如果真的有,那么教你一

循环-vb.net操作word最后一步求解

问题描述 vb.net操作word最后一步求解 If e.KeyCode = Keys.Enter Then Dim q As Integer = InputBox("请输入搜索页码的次数") If q > 0 Then Static Dim p(q) As String Dim j As Integer For j = 0 To q - 1 p(j) = InputBox("请输入关键字") Next Dim temp If p(j) = p(q) Then