[VB6] 讀 / 寫 Excel

[VB6] 讀 / 寫 Excel

VB6與Excel本是同根生,核心架構都差不多,所以要用VB6讀寫Excel是相當方便的;唯一要特別注意,若是要由VB控制Excel讀寫大量的資料,千萬不要用迴圈的方式一格一格讀寫,如果你那樣做的話,程式跑起來會很慢很慢,我知道兩種方式

1.引用Excwl Application,並用陣列進行資料寫讀;優點,相當靈活等於是在操作Excel、效能佳(比不上OLEDB)。缺點,需要花時間瞭解Excel的物件模型

開啟Excel→按ALT+F11→按F1→此時會出現說明,若沒有出現表示沒安裝,快去裝吧→按Microsoft Excel 物件模型。就可以查詢Excel模型

2.引用OLEDB進行資料寫入讀出;優點,此法讀寫資料是最快,效能最佳。缺點,但不靈活,有可能你不單單只是要讀寫資料

 

下圖為Excel模型

1

 

接下來就直接進入主題,

第一步:前期綁定Excel,更方便的操作Excel,不用背模型語法(會有版本的問題,若擔心版本問題請採用後期綁定)

2 3

 

第二步:引用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

Image result for microsoft+mvp+logo