Visual Basic是一個完全支持OLE自動化的應(yīng)用程序開發(fā)工具。使用VB,既可以編制做為OLE服務(wù)器的應(yīng)用程序,也可以編制作為OLE客戶機(jī)的應(yīng)用程序。MS Word 6.0是一個不完全支持OLE自動化的應(yīng)用軟件,它只能作為OLE服務(wù)器供其它應(yīng)用程序調(diào)用。本文將以一個VB應(yīng)用程序通過OLE自動化操縱MS Word 6.0的實(shí)例,具體描述在VB中操縱OLE服務(wù)器應(yīng)用程序的方法。
在VB代碼中調(diào)用OLE服務(wù)器的方法如下:控件類型 屬性 屬性值 Data Control DataBaseNameName C:\VB\BIBLIO.MDBData1 RecordSource Authors DBGrid ControlCommandButton Control DataSource Data1 Name cmdReport Caption 生成報(bào)表 CommandButton Control Name cmdExit Caption 退出
⑴聲明一個對象變量。如:Dim MS—WORD As Object
⑵根據(jù)OLE服務(wù)器提供的對象類型,使用CreateObject函數(shù)創(chuàng)建一個對象,并由Set語句將該對象賦予對象變量。
CreateObject函數(shù)的語法如下:
CreateObject(class)
函數(shù)參數(shù)class的格式為:appname.objecttype
appname是提供對象的應(yīng)用程序的名稱,如:Word
objecttype是欲創(chuàng)建的對象的類,如:Basic
MS Word 6.0為OLE客戶機(jī)應(yīng)用程序提供了一個類型為“basic”的對象,VB可以使用該對象類型,實(shí)現(xiàn)對Word的調(diào)用。具體語句如下:
Set MS—WORD = CreateObject(″Word.Basic″)
⑶通過設(shè)置對象的屬性和使用對象的方法,實(shí)現(xiàn)對OLE服務(wù)器的操縱。
對象類型“basic”采用Word宏語言WordBasic的大多數(shù)語句和函數(shù)作為它的方法。也就是說,一旦在VB中創(chuàng)建了一個“basic”對象,就可以通過該對象使用大多數(shù)WordBasic語句或函數(shù),從而可以近乎完美地操縱Word或Word文檔。例如,下列語句在VB代碼中使用WordBasic的FileNewDefault語句創(chuàng)建一個Word新文檔:
MS—WORD.FileNewDefault
⑷調(diào)用結(jié)束后,使用關(guān)鍵字Nothing,釋放該變量占用的資源。如:Set MS—WORD = Nothing
實(shí)例
本例將使用VB編寫一個簡單的數(shù)據(jù)庫應(yīng)用程序。該程序從數(shù)據(jù)庫中取出數(shù)據(jù),然后通過OLE自動化將這些數(shù)據(jù)輸入至Word,并按照Word的排版格式編排成一個表格。例中使用的數(shù)據(jù)庫是VB自含的BILIO.MDB數(shù)據(jù)庫,數(shù)據(jù)檢索結(jié)果取自Authors數(shù)據(jù)表。本例稍加改動,即可作為數(shù)據(jù)庫應(yīng)用程序的報(bào)表生成功能模塊使用。
首先,創(chuàng)建一個名為Form1的窗體,設(shè)置其Caption 屬性為“OLE自動化演示”。然后在該窗體中加入四個控件并設(shè)置有關(guān)屬性,具體如下:
完成上述工作后,按F5運(yùn)行的屏幕布局應(yīng)如下圖示。
接著需要編寫VB代碼來實(shí)現(xiàn)與Word的連接。本實(shí)例的代碼清單如下(注:代碼中的斜體部分是WordBasic宏語言的語句,這些語句的使用方法請參閱WordBasic宏語言有關(guān)資料):
⑴在Form1的General Declarations部分聲明窗體級全局變量和常量。
Dim MS—WORD As Object '聲明一個對象變量
Const MaxCols = 5 '聲明一個用于標(biāo)明當(dāng)前數(shù)據(jù)記錄集中字段個數(shù)的常量。在本例中字段個數(shù)為5
在VB代碼中調(diào)用OLE服務(wù)器的方法如下:控件類型 屬性 屬性值 Data Control DataBaseNameName C:\VB\BIBLIO.MDBData1 RecordSource Authors DBGrid ControlCommandButton Control DataSource Data1 Name cmdReport Caption 生成報(bào)表 CommandButton Control Name cmdExit Caption 退出
⑴聲明一個對象變量。如:Dim MS—WORD As Object
⑵根據(jù)OLE服務(wù)器提供的對象類型,使用CreateObject函數(shù)創(chuàng)建一個對象,并由Set語句將該對象賦予對象變量。
CreateObject函數(shù)的語法如下:
CreateObject(class)
函數(shù)參數(shù)class的格式為:appname.objecttype
appname是提供對象的應(yīng)用程序的名稱,如:Word
objecttype是欲創(chuàng)建的對象的類,如:Basic
MS Word 6.0為OLE客戶機(jī)應(yīng)用程序提供了一個類型為“basic”的對象,VB可以使用該對象類型,實(shí)現(xiàn)對Word的調(diào)用。具體語句如下:
Set MS—WORD = CreateObject(″Word.Basic″)
⑶通過設(shè)置對象的屬性和使用對象的方法,實(shí)現(xiàn)對OLE服務(wù)器的操縱。
對象類型“basic”采用Word宏語言WordBasic的大多數(shù)語句和函數(shù)作為它的方法。也就是說,一旦在VB中創(chuàng)建了一個“basic”對象,就可以通過該對象使用大多數(shù)WordBasic語句或函數(shù),從而可以近乎完美地操縱Word或Word文檔。例如,下列語句在VB代碼中使用WordBasic的FileNewDefault語句創(chuàng)建一個Word新文檔:
MS—WORD.FileNewDefault
⑷調(diào)用結(jié)束后,使用關(guān)鍵字Nothing,釋放該變量占用的資源。如:Set MS—WORD = Nothing
實(shí)例
本例將使用VB編寫一個簡單的數(shù)據(jù)庫應(yīng)用程序。該程序從數(shù)據(jù)庫中取出數(shù)據(jù),然后通過OLE自動化將這些數(shù)據(jù)輸入至Word,并按照Word的排版格式編排成一個表格。例中使用的數(shù)據(jù)庫是VB自含的BILIO.MDB數(shù)據(jù)庫,數(shù)據(jù)檢索結(jié)果取自Authors數(shù)據(jù)表。本例稍加改動,即可作為數(shù)據(jù)庫應(yīng)用程序的報(bào)表生成功能模塊使用。
首先,創(chuàng)建一個名為Form1的窗體,設(shè)置其Caption 屬性為“OLE自動化演示”。然后在該窗體中加入四個控件并設(shè)置有關(guān)屬性,具體如下:
完成上述工作后,按F5運(yùn)行的屏幕布局應(yīng)如下圖示。
接著需要編寫VB代碼來實(shí)現(xiàn)與Word的連接。本實(shí)例的代碼清單如下(注:代碼中的斜體部分是WordBasic宏語言的語句,這些語句的使用方法請參閱WordBasic宏語言有關(guān)資料):
⑴在Form1的General Declarations部分聲明窗體級全局變量和常量。
Dim MS—WORD As Object '聲明一個對象變量
Const MaxCols = 5 '聲明一個用于標(biāo)明當(dāng)前數(shù)據(jù)記錄集中字段個數(shù)的常量。在本例中字段個數(shù)為5