實現VB與EXCEL的無縫串連

來源:互聯網
上載者:User
excel 如何?VB與EXCEL的無縫串連

  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脫節。

  二、 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的無縫串連。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.