程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 如何實現VB與EXCEL的無縫連接

如何實現VB與EXCEL的無縫連接

編輯:.NET實例教程

如何實現VB與Excel的無縫連接   2003-02-17· ·吳剛··yesky


  VB是常用的應用軟件開發工具之一,由於VB的報表功能有限,而且一但報表格式發生變化,就得相應修改程序,給應用軟件的維護工作帶來極大的不便。因此有很多程序員現在已經充分利用EXECL的強大報表功來實現報表功能。但由於VB與Excel由於分別屬於不同的應用系統,如何把它們有機地結合在一起,是一個值得我們研究的課題。

  一、 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對象
Set xlBook = xlApp.Workbooks.Open("文件名") ''打開已經存在的Excel工件簿文件
xlApp.Visible = True ''設置Excel對象可見(或不可見)
Set xlSheet = xlBook.Worksheets("表名") ''設置活動工作表
xlSheet.Cells(row, col) =值 ''給單元格(row,col)賦值
xlSheet.PrintOut ''打印工作表
xlBook.Close (True) ''關閉工作簿
xlApp.Quit ''結束Excel對象
Set xlApp = Nothing ''釋放xlApp對象
xlBook.RunAutoMacros (xlAutoOpen) ''運行Excel啟動宏
xlBook.RunAutoMacros (xlAutoClose) ''運行Excel關閉宏
  4、在運用以上VB命令操作EXCEL表時,除非設置EXCEL對象不可見,否則VB程序可繼續執行其它操作,也能夠關閉EXCEL,同時也可對EXCEL進行操作。但在EXCEL操作過程中關閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與Excel脫節。

$False$



  二、 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過程
 If Dir("D:\temp\excel.bz") = "" Then ''判斷Excel是否打開
  Set xlApp = CreateObject("Excel.Application") ''創建Excel應用類
  xlApp.Visible = True ''設置Excel可見
  Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") ''打開Excel工作簿
  Set xlsheet = xlBook.Worksheets(1) ''打開Excel工作表
  xlsheet.Activate ''激活工作表
  xlsheet.Cells(1, 1) = "abc" ''給單元格1行駛列賦值
  xlBook.RunAutoMacros (xlAutoOpen) 運行Excel中的啟動宏
 Else
  MsgBox ("Excel已打開")
 End If
End Sub

Private Sub Command2_Click()
 If Dir("D:\temp\excel.bz") <> "" Then ''由VB關閉Excel
  xlBook.RunAutoMacros (xlAutoClose) ''執行Excel關閉宏
  xlBook.Close (True) ''關閉Excel工作簿 
  xlApp.Quit ''關閉Excel
 End If
 Set xlApp = Nothing ''釋放Excel對象
 End
End Sub

  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的無縫連接。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved