[VB6] 讀 / 寫 Excel
VB6與Excel本是同根生,核心架構都差不多,所以要用VB6讀寫Excel是相當方便的;唯一要特別注意,若是要由VB控制Excel讀寫大量的資料,千萬不要用迴圈的方式一格一格讀寫,如果你那樣做的話,程式跑起來會很慢很慢,我知道兩種方式
1.引用Excwl Application,並用陣列進行資料寫讀;優點,相當靈活等於是在操作Excel、效能佳(比不上OLEDB)。缺點,需要花時間瞭解Excel的物件模型
開啟Excel→按ALT+F11→按F1→此時會出現說明,若沒有出現表示沒安裝,快去裝吧→按Microsoft Excel 物件模型。就可以查詢Excel模型
2.引用OLEDB進行資料寫入讀出;優點,此法讀寫資料是最快,效能最佳。缺點,但不靈活,有可能你不單單只是要讀寫資料
下圖為Excel模型
接下來就直接進入主題,
第一步:前期綁定Excel,更方便的操作Excel,不用背模型語法(會有版本的問題,若擔心版本問題請採用後期綁定)
第二步:引用Excel
'#一部電腦僅執行一個Excel Application, 就算中突開啟Excel也不會影響程式執行
'#在工作管理員中只會看見一個EXCEL.exe在執行,不會浪費電腦資源
'#引用正在執行的Excel Application
Set xlApp = GetObject(, "Excel.Application")
'#若發生錯誤表示電腦沒有Excel正在執行,需重新建立一個新的應用程式
If Err <> 0 Then
Err.Clear
'#執行一個新的Excel Application
Set xlApp = CreateObject("Excel.Application")
If Err <> 0 Then
MsgBox "電腦沒有安裝Excel"
End
End If
End If
第三步:讀寫Excel
'#Excel活頁簿設定
'===================================================
'打開已經存在的EXCEL工件簿文件
Set xlBook = xlApp.Workbooks.Open(App.Path & "\" & "Sample.xlt")
'停用警告訊息
xlApp.DisplayAlerts = False
'設置EXCEL對象可見
xlApp.Visible = True
'設定活頁簿為焦點
xlBook.Activate
'顯示第一個子視窗
xlBook.Parent.Windows(1).Visible = True
'引用第一個工作表
Set xlSheet = xlBook.Worksheets(1)
'設定工作表為焦點
xlSheet.Activate
'===================================================
'#用Array寫資料至EXCEL
Dim myRows As Long, myCols As Long
myRows = UBound(DataArray, 1)
myCols = UBound(DataArray, 2)
'選擇儲存格範圍
xlSheet.Range(cells(2, 1), cells(myCols, myRows)).Select
'陣列一次寫入Excel
xlSheet.Range(cells(2, 1), cells(myCols, myRows)).Value = xlApp.Transpose(DataArray)
'呼叫Excel巨集
xlApp.Run ("Sample.xlt" & "!Caculater")
'另存新檔
xlBook.SaveAs App.Path & "\" & "TETS.XLS"
'關閉EXCEL
xlApp.Quit
Excel的功能太多了,無法詳細敘述,請參考之前在網路上整理的EXCEL VBA語法[VBA] Excel VBA 指令。
範例下載:VB6讀EXCEL.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET