通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>VB编程>>正文 新版上线![旧版]
注:打开慢时请稍等

在VB中操纵OLE服务器应用程序

http://www.iyit.net  日期:2006-5-22 16:59:32  来源:网络转载   点击:
参加讨论OLE自动化是不同应用程序之间进行通讯的一个标准。OLE自动化的工作方式是:通讯被动方(OLE服务器)应用程序向通讯主动方(OLE客户机)应用程序提供一个以上可供其调用的OLE自动化对象类型,OLE客户机通过引用这些对象实现对OLE服务器的调用,然后通过设置对象的属性和使用对象的方法操纵OLE服务器应用程序,完成两者之间的通讯。

Visual Basic是一个完全支持OLE自动化的应用程序开发工具。使用VB,既可以编制做为OLE服务器的应用程序,也可以编制作为OLE客户机的应用程序。MS Word 6.0是一个不完全支持OLE自动化的应用软件,它只能作为OLE服务器供其它应用程序调用。本文将以一个VB应用程序通过OLE自动化操纵MS Word 6.0的实例,具体描述在VB中操纵OLE服务器应用程序的方法。

在VB代码中调用OLE服务器的方法如下:控件类型 属性 属性值 Data Control DataBaseNameName C:\VB\BIBLIO.MDBData1 RecordSource Authors DBGrid ControlCommandButton Control DataSource Data1 Name cmdReport Caption 生成报表 CommandButton Control Name cmdExit Caption 退出

⑴声明一个对象变量。如:Dim MS—WORD As Object

⑵根据OLE服务器提供的对象类型,使用CreateObject函数创建一个对象,并由Set语句将该对象赋予对象变量。

CreateObject函数的语法如下:

CreateObject(class)

函数参数class的格式为:appname.objecttype

appname是提供对象的应用程序的名称,如:Word

objecttype是欲创建的对象的类,如:Basic

MS Word 6.0为OLE客户机应用程序提供了一个类型为“basic”的对象,VB可以使用该对象类型,实现对Word的调用。具体语句如下:

Set MS—WORD = CreateObject(″Word.Basic″)

⑶通过设置对象的属性和使用对象的方法,实现对OLE服务器的操纵。

对象类型“basic”采用Word宏语言WordBasic的大多数语句和函数作为它的方法。也就是说,一旦在VB中创建了一个“basic”对象,就可以通过该对象使用大多数WordBasic语句或函数,从而可以近乎完美地操纵Word或Word文档。例如,下列语句在VB代码中使用WordBasic的FileNewDefault语句创建一个Word新文档:

MS—WORD.FileNewDefault

⑷调用结束后,使用关键字Nothing,释放该变量占用的资源。如:Set MS—WORD = Nothing

实例

本例将使用VB编写一个简单的数据库应用程序。该程序从数据库中取出数据,然后通过OLE自动化将这些数据输入至Word,并按照Word的排版格式编排成一个表格。例中使用的数据库是VB自含的BILIO.MDB数据库,数据检索结果取自Authors数据表。本例稍加改动,即可作为数据库应用程序的报表生成功能模块使用。

首先,创建一个名为Form1的窗体,设置其Caption 属性为“OLE自动化演示”。然后在该窗体中加入四个控件并设置有关属性,具体如下:

完成上述工作后,按F5运行的屏幕布局应如下图示。

接着需要编写VB代码来实现与Word的连接。本实例的代码清单如下(注:代码中的斜体部分是WordBasic宏语言的语句,这些语句的使用方法请参阅WordBasic宏语言有关资料):

⑴在Form1的General Declarations部分声明窗体级全局变量和常量。

Dim MS—WORD As Object '声明一个对象变量

Const MaxCols = 5 '声明一个用于标明当前数据记录集中字段个数的常量。在本例中字段个数为5

⑵创建一个子例程InsertTableIntoMS—Word(),该子例程使用WordBasic宏语言在Word 6.0中制作一个表格,并将当前数据记录集中的数据依次插入表格单元。

Sub InsertTableIntoMS—Word()

Dim I As Integer, j As Integer, Col As Integer, Row As Integer

Dim CellContent As String

Me.Hide

Col = MaxCols

Row = Data1.Recordset.RecordCount

MS—WORD.FileNewDefault

MS—WORD.MsgBox ″正在建立报表,请稍候…″, ″″, -1

MS—WORD.LeftPara

MS—WORD.ScreenUpdating 0

MS—WORD.TableInsertTable , Col, Row, , , 16, 167

MS—WORD.StartOfDocument

Data1.Recordset.MoveFirst

For I = 1 To MaxCols

CellContent$ = Data1.Recordset.Fields(I - 1).Name

MS—WORD.Insert CellContent$

MS—WORD.NextCell

Next I

Do

For I = 1 To MaxCols

If IsNull(Data1.Recordset.Fields(I - 1).Value) Then

CellContent$ = ″″

Else

CellContent$ = Data1.Recordset.Fields(I - 1).Value

End If

MS—WORD.Insert CellContent$

MS—WORD.NextCell

Next I

Data1.Recordset.MoveNext

Loop Until Data1.Recordset.EOF = True

MS—WORD.TableDeleteRow

MS—WORD.StartOfDocument

MS—WORD.TableSelectRow

MS—WORD.TableHeadings 1

MS—WORD.CenterPara

MS—WORD.StartOfDocument

MS—WORD.ScreenRefresh

MS—WORD.ScreenUpdating 1

MS—WORD.MsgBox ″结束″, ″″, -1

Me.Show

End Sub

⑶命令按钮控件cmdReport的鼠标单击事件代码

Private Sub cmdReport—Click()

Dim Response

Screen.MousePointer = 11

Set MS—WORD = CreateObject(″Word.Basic″)

MS—WORD.AppActivate ″Microsoft Word″, 1

Call InsertTableIntoMS—Word

Screen.MousePointer = 0

End Sub

⑷命令按钮控件cmdExit的鼠标单击事件代码

Private Sub cmdExit—Click()

Set MS—WORD = Nothing

Unload Me

End Sub

几点说明

①在本程序运行之前,Word 6.0必须已经成功安装,否则系统将产生一个VB可捕获的错误。Word 6.0的表格列不能超过31列,否则系统将产生一个VB可捕获的错误。读者可以在代码中加入错误处理代码以处理这些错误。

②若本程序运行时Word尚未运行,OLE自动化将试图启动它。因此程序代码中不必包括一条分开的指令来启动Word。若Word是由VB应用程序启动的,那么程序结束时Word将自动关闭;否则,Word将继续运行。

③本实例使用的大部分WordBasic语句都与Word文档的插入点有关,如果在本程序运行过程中人为地移动了插入点,则有可能导致表格的混乱和错误。为了避免这种情况发生,本程序在执行插入操作之前使用ScreenUpdating语句将Word屏幕更新关闭,使用户在执行插入操作时不能移动插入点。

从上述实例可以看到,通过OLE自动化,使我们在开发新的应用程序时可以“借用”现成的应用程序的部分或全部功能,从而大大地减轻开发的工作量,缩短开发周期,使开发工作事半功倍。这就是OLE自动化带给开发人员的好处。

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:浅谈用VB6.0编写BO程序
下一篇:利用VB访问Internet
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
VB两种操作Access数据库方法的比较 用VB备份和恢复SQL Server数据库的方法 VB程序如何访问数据库
VB程序如何连接数据库 VB+Oracle 9i如何构建开发和运行的环境 VB游戏攻略
在VBScript中使用类(一) 在VBScript中使用类(二) 在VBScript中使用类(三)
在VBScript中使用类(四) RC4经典加密算法VB版本代码 在asp中通过vbs类实现rsa加密与解密
ASP VBScript 函数速查表 清空iis log 中自己登录ip的vbs EJB系列教程之一(JBuilder4+IAS41+Vbj4
用VB编写标准CGI程序 用ASP、VB和XML建立互联网应用程序 使用XML+VBS技术在ASP中实现报表的打印
vbs类生成xml文件 Delphi使用VB6编写的ActiveX控件??? Delphi使用VB编写的ActiveX控件全攻略
如何把VC++代码转换成VB代码? VB与VC通信初探(二) VB与VC通信初探(一)
最新更新 热点排行 推荐新闻
Visual Basic 5.0中实现视频画中画
保存列表框内容为文本文件
Visual Basic 概述
Visual Basic 概述二
Visual Basic 概念
长期使用中型Access数据库的一点经验
Access数据库及其基本操作
两个未公开的ACCESS方法的使用技巧
如何确定有多少人登陆数据库?
提高拆分数据库在网上运行、编辑的速度
能否编译mdb文件到exe文件?
创建一个空数据库
隐藏 Access 窗口
获取Windows / System / Temp 目录路径
Access数据库开发技巧(一)
Visual Basic 概述
快速初始化Variant和String类型数组
VB中APP对象及其应用
Visual Basic 概述二
Visual Basic使用技巧
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
QQ最新版下载 2006 beta2 体验新感受 
优秀公益广告作品欣赏(7)
Office2007简体中文版浮出水面 美图抢
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(6)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
直接编辑VB中网格控制项的两种方法
硬盘分区消失,解决方法!
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
AMD水货盒装CPU识别方法
IP地址资源2012年枯竭 部署IPv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
Dreamweaver MX 2004从零开始(1)
利用CSS改善网站可访问性
如何让MM的脸通透可人
msn8.0下载
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息