• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在VB中操縱OLE服務器應用程序

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 81次 | 進入軟件測試論壇討論

    領測軟件測試網 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自動化帶給開發人員的好處。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>