国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

實現VB與EXCEL的無縫連接

2024-07-21 02:21:03
字體:
來源:轉載
供稿:網友
如何實現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的無縫連接。





發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大余县| 中西区| 武穴市| 嘉祥县| 安陆市| 新邵县| 迁西县| 太康县| 纳雍县| 长白| 孝感市| 新蔡县| 无极县| 吴忠市| 思南县| 卢龙县| 邯郸市| 邵阳市| 永和县| 湖南省| 中江县| 银川市| 永清县| 东辽县| 无棣县| 贵溪市| 浦东新区| 朝阳市| 从江县| 长汀县| 赣州市| 壤塘县| 新泰市| 江川县| 桃园市| 温州市| 依兰县| 泰来县| 丽江市| 台前县| 绥江县|