一、 VB讀寫EXCEL表:
VB本身提自動化功能可以讀寫EXCEL表,其方法如下:
1、在工程中引用Microsoft Excel類型庫:
從"工程"菜單中選擇"引用"欄;選擇Microsoft Excel 9.0 Object Library(EXCEL2000),然後選擇"確定"。表示在工程中要引用EXCEL類型庫。
2、在通用對象的聲明過程中定義EXCEL對象:
Dim xlApp As Excel.Application Dim xlBook As Excel.WorkBook Dim xlSheet As Excel.Worksheet |
3、在程序中操作EXCEL表常用命令:
Set xlApp = CreateObject("Excel.Application") '創建EXCEL對象 Dim rng As Range rng.Select
wkst.Range("g6").Select app.ActiveWindow.DisplayGridlines = False '設置網絡線 第二種調用方法 With wkst .Range(.Cells(x + 1, y), .Cells(x + 1, y)).Value = "總用量" |
4、在運用以上VB命令操作EXCEL表時,除非設置EXCEL對象不可見,否則VB程序可繼續執行其它操作,也能夠關閉EXCEL,同時也可對EXCEL進行操作。但在EXCEL操作過程中關閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節。
二、 EXCEL的宏功能:
EXCEL提供一個Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點擊右鍵菜單的"插入模塊",則增加一個"模塊1",在此模塊中可以運用Visual Basic語言編寫函數和過程並稱之爲宏。其中,EXCEL有兩個自動宏:一個是啓動宏(Sub Auto_Open()),另一個是關閉宏(Sub Auto_Close())。它們的特性是:當用EXCEL打含有啓動宏的工簿時,就會自動運行啓動宏,同理,當關閉含有關閉宏的工作簿時就會自動運行關閉宏。但是通過VB的自動化功能來調用EXCEL工作表時,啓動宏和關閉宏不會自動運行,而需要在VB中通過命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 來運行啓動宏和關閉宏。
三、 VB與EXCEL的相互勾通:
充分利用EXCEL的啓動宏和關閉宏,可以實現VB與EXCEL的相互勾通,其方法如下:
在EXCEL的啓動宏中加入一段程序,其功能是在磁盤中寫入一個標誌文件,同時在關閉宏中加入一段刪除此標誌文件的程序。VB程序在執行時通過判斷此標誌文件存在與否來判斷EXCEL是否打開,如果此標誌文件存在,表明EXCEL對象正在運行,應該禁止其它程序的運行。如果此標誌文件不存在,表明EXCEL對象已被用戶關閉,此時如果要使用EXCEL對象運行,必須重新創建EXCEL對象。
四、舉例:
1、在VB中,建立一個FORM,在其上放置兩個命令按鈕,將Command1的Caption屬性改爲EXCEL,Command2的Caption屬性改爲End。然後在其中輸入如下程序:
Dim xlApp As Excel.Application '定義EXCEL類 Dim xlBook As Excel.Workbook '定義工件簿類 Dim xlsheet As Excel.Worksheet '定義工作表類 Private Sub Command1_Click() '打開EXCEL過程 Private Sub Command2_Click() |
2、在D盤根目錄上建立一個名爲Temp的子目錄,在Temp目錄下建立一個名爲"bb.xls"的EXCEL文件。
3、在"bb.xls"中打開Visual Basic編輯器,在工程窗口中點鼠標鍵選擇插入模塊,在模塊中輸入入下程序存盤:
Sub auto_open() Open "d:/temp/excel.bz" For Output As #1 '寫標誌文件 Close #1 End Sub Sub auto_close() Kill "d:/temp/excel.bz" '刪除標誌文件 End Sub |
4、運行VB程序,點擊EXCEL按鈕可以打開EXCEL系統,打開EXCEL系統後,VB程序和EXCEL分別屬兩個不同的應用系統,均可同時進行操作,由於系統加了判斷,因此在VB程序中重複點擊EXCEL按鈕時會提示EXCEL已打開。如果在EXCEL中關閉EXCEL後再點EXCEL按鈕,則會重新打開EXCEL。而無論EXCEL打開與否,通過VB程序均可關閉EXCEL。這樣就實現了VB與EXCEL的無縫連接。