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

故国神游持

故国神游持

2016-02-19 12:57

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享在VB中操纵OLE服务器应用程序,希望可以对大家能有小小的帮助。
OLE自动化是不同应用程序之间进行通讯的一个标准。OLE自动化的工作方式是:通讯被动方(OLE服务器)应用程序向通讯主动方(OLE客户机)应用程序提供一个以上可供其调用的OLE自动化对象类型,OLE客户机通过引用这些对象实现对OLE服务器的调用,然后通过设置对象的属性和使用对象的方法操纵OLE服务器应用程序,完成两者之间的通讯。
  
  VisualBasic是一个完全支持OLE自动化的应用程序开发工具。使用VB,既可以编制做为OLE服务器的应用程序,也可以编制作为OLE客户机的应用程序。MSWord6.0是一个不完全支持OLE自动化的应用软件,它只能作为OLE服务器供其它应用程序调用。本文将以一个VB应用程序通过OLE自动化操纵MSWord6.0的实例,具体描述在VB中操纵OLE服务器应用程序的方法。
  
  在VB代码中调用OLE服务器的方法如下:控件类型属性属性值DataControlDataBaseNameNameC:VBBIBLIO.MDBData1RecordSourceAuthorsDBGridControlCommandButtonControlDataSourceData1NamecmdReportCaption生成报表CommandButtonControlNamecmdExitCaption退出
  
  ⑴声明一个对象变量。如:DimMS—WORDAsObject
  
  ⑵根据OLE服务器提供的对象类型,使用CreateObject函数创建一个对象,并由Set语句将该对象赋予对象变量。
  
  CreateObject函数的语法如下:
  
  CreateObject(class)
  
  函数参数class的格式为:appname.objecttype
  
  appname是提供对象的应用程序的名称,如:Word
  
  objecttype是欲创建的对象的类,如:Basic
  
  MSWord6.0为OLE客户机应用程序提供了一个类型为“basic”的对象,VB可以使用该对象类型,实现对Word的调用。具体语句如下:
  
  SetMS—WORD=CreateObject(″Word.Basic″)
  
  ⑶通过设置对象的属性和使用对象的方法,实现对OLE服务器的操纵。
  
  对象类型“basic”采用Word宏语言WordBasic的大多数语句和函数作为它的方法。也就是说,一旦在VB中创建了一个“basic”对象,就可以通过该对象使用大多数WordBasic语句或函数,从而可以近乎完美地操纵Word或Word文档。例如,下列语句在VB代码中使用WordBasic的FileNewDefault语句创建一个Word新文档:
  
  MS—WORD.FileNewDefault
  
  ⑷调用结束后,使用关键字Nothing,释放该变量占用的资源。如:SetMS—WORD=Nothing
  
  实例
  
  本例将使用VB编写一个简单的数据库应用程序。该程序从数据库中取出数据,然后通过OLE自动化将这些数据输入至Word,并按照Word的排版格式编排成一个表格。例中使用的数据库是VB自含的BILIO.MDB数据库,数据检索结果取自Authors数据表。本例稍加改动,即可作为数据库应用程序的报表生成功能模块使用。
  
  首先,创建一个名为Form1的窗体,设置其Caption属性为“OLE自动化演示”。然后在该窗体中加入四个控件并设置有关属性,具体如下:
  
  完成上述工作后,按F5运行的屏幕布局应如下图示。
  
  接着需要编写VB代码来实现与Word的连接。本实例的代码清单如下(注:代码中的斜体部分是WordBasic宏语言的语句,这些语句的使用方法请参阅WordBasic宏语言有关资料):
  
  ⑴在Form1的GeneralDeclarations部分声明窗体级全局变量和常量。
  
  DimMS—WORDAsObject'声明一个对象变量
  
  ConstMaxCols=5'声明一个用于标明当前数据记录集中字段个数的常量。在本例中字段个数为5
  
  ⑵创建一个子例程InsertTableIntoMS—Word(),该子例程使用WordBasic宏语言在Word6.0中制作一个表格,并将当前数据记录集中的数据依次插入表格单元。
  
  SubInsertTableIntoMS—Word()
  
  DimIAsInteger,jAsInteger,ColAsInteger,RowAsInteger
  
  DimCellContentAsString
  
  Me.Hide
  
  Col=MaxCols
  
  Row=Data1.Recordset.RecordCount
  
  MS—WORD.FileNewDefault
  
  MS—WORD.MsgBox″正在建立报表,请稍候…″,″″,-1
  
  MS—WORD.LeftPara
  
  MS—WORD.ScreenUpdating0
  
  MS—WORD.TableInsertTable,Col,Row,,,16,167
  
  MS—WORD.StartOfDocument
  
  Data1.Recordset.MoveFirst
  
  ForI=1ToMaxCols
  
  CellContent$=Data1.Recordset.Fields(I-1).Name
  
  MS—WORD.InsertCellContent$
  
  MS—WORD.NextCell
  
  NextI
  
  Do
  
  ForI=1ToMaxCols
  
  IfIsNull(Data1.Recordset.Fields(I-1).Value)Then
  
  CellContent$=″″
  
  Else
  
  CellContent$=Data1.Recordset.Fields(I-1).Value
  
  EndIf
  
  MS—WORD.InsertCellContent$
  
  MS—WORD.NextCell
  
  NextI
  
  Data1.Recordset.MoveNext
  
  LoopUntilData1.Recordset.EOF=True
  
  MS—WORD.TableDeleteRow
  
  MS—WORD.StartOfDocument
  
  MS—WORD.TableSelectRow
  
  MS—WORD.TableHeadings1
  
  MS—WORD.CenterPara
  
  MS—WORD.StartOfDocument
  
  MS—WORD.ScreenRefresh
  
  MS—WORD.ScreenUpdating1
  
  MS—WORD.MsgBox″结束″,″″,-1
  
  Me.Show
  
  EndSub
  
  ⑶命令按钮控件cmdReport的鼠标单击事件代码
  
  PrivateSubcmdReport—Click()
  
  DimResponse
  
  Screen.MousePointer=11
  
  SetMS—WORD=CreateObject(″Word.Basic″)
  
  MS—WORD.AppActivate″MicrosoftWord″,1
  
  CallInsertTableIntoMS—Word
  
  Screen.MousePointer=0
  
  EndSub
  
  ⑷命令按钮控件cmdExit的鼠标单击事件代码
  
  PrivateSubcmdExit—Click()
  
  SetMS—WORD=Nothing
  
  UnloadMe
  
  EndSub
  
  几点说明
  
  ①在本程序运行之前,Word6.0必须已经成功安装,否则系统将产生一个VB可捕获的错误。Word6.0的表格列不能超过31列,否则系统将产生一个VB可捕获的错误。读者可以在代码中加入错误处理代码以处理这些错误。
  
  ②若本程序运行时Word尚未运行,OLE自动化将试图启动它。因此程序代码中不必包括一条分开的指令来启动Word。若Word是由VB应用程序启动的,那么程序结束时Word将自动关闭;否则,Word将继续运行。
  
  ③本实例使用的大部分WordBasic语句都与Word文档的插入点有关,如果在本程序运行过程中人为地移动了插入点,则有可能导致表格的混乱和错误。为了避免这种情况发生,本程序在执行插入操作之前使用ScreenUpdating语句将Word屏幕更新关闭,使用户在执行插入操作时不能移动插入点。
  
  从上述实例可以看到,通过OLE自动化,使我们在开发新的应用程序时可以“借用”现成的应用程序的部分或全部功能,从而大大地减轻开发的工作量,缩短开发周期,使开发工作事半功倍。这就是OLE自动化带给开发人员的好处。->

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
在VB中操纵OLE服务器应用程序

在VB应用程序中恰当的使用声音

编程语言 网络编程
在VB应用程序中恰当的使用声音

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在VFP、VB应用程序中激活鼠标功能

编程语言 网络编程
在VFP、VB应用程序中激活鼠标功能

怎样用VB在应用程序中调用API

编程语言 网络编程
怎样用VB在应用程序中调用API

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在VB应用程序中控制Win95的启动

编程语言 网络编程
在VB应用程序中控制Win95的启动

服务器应用程序不可用的多种解决方案

服务器
服务器应用程序不可用的多种解决方案

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ado方式访问带密码数据库的方法

ado方式访问带密码数据库的方法

常用正则表达式语法例句

常用正则表达式语法例句
下拉加载更多内容 ↓