[VB .NET] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全

[VB .NET] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全

在上一篇介紹用C#讀Excel,這次就VB.NET來展現對Excel的讀寫,對我來說用VB.NET操作Excel比較簡單,不像C#.Net有那麼多限制,Excel VBA果然跟VB.NET是兄弟,讓我不費吹灰之力就能溝通、控制,接下來就來寫實作方法:

第一步:加入EXCEL.EXE當參考,基本上跟上一篇一模一樣,請參考[C# .Net] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全

第二步:引用Microsoft.Office.Interop.Excel命名空間

Imports Microsoft.Office.Interop.Excel

 

第三步:引用Excel類別

 '用於存放Microsoft Excel 引用的變數。 
Public xlApp As Application
Public xlBook As Workbook
Public xlSheet As Worksheet
Public xlRange As Range

 

第四步:為專案引用Excel,開啟 / 不開啟 一個新的Excel

   On Error Resume Next
       '#一部電腦僅執行一個Excel Application, 就算中突開啟Excel也不會影響程式執行
        '#在工作管理員中只會看見一個EXCEL.exe在執行,不會浪費電腦資源
        '#引用正在執行的Excel Application
        xlApp = GetObject(, "Excel.Application")
        '#若發生錯誤表示電腦沒有Excel正在執行,需重新建立一個新的應用程式
        If Err.Number() <> 0 Then
            Err.Clear()
            '#執行一個新的Excel Application
            xlApp = CreateObject("Excel.Application")
            If Err.Number() <> 0 Then
                MsgBox("電腦沒有安裝Excel")
                End
            End If
        End If

 

第五步:快樂使用Excel

      '打開已經存在的EXCEL工件簿文件
        xlBook = xlApp.Workbooks.Open(Directory.GetCurrentDirectory() & "\" & "Sample.xlt")
        '停用警告訊息
        xlApp.DisplayAlerts = False
        '設置EXCEL對象可見
        xlApp.Visible = True
        '設定活頁簿為焦點
        xlBook.Activate()
        '顯示第一個子視窗
        xlBook.Parent.Windows(1).Visible = True
        '引用第一個工作表
        xlSheet = xlBook.Worksheets(1)
        '設定工作表為焦點
        xlSheet.Activate()
 
        '===================================================
        '#用Array寫資料至EXCEL
        Dim myRows As Long, myCols As Long
        myRows = UBound(DataArray, 1) + 1
        myCols = UBound(DataArray, 2)
        '選擇儲存格範圍
        xlSheet.Range(xlApp.Cells(2, 1), xlApp.Cells(myCols, myRows)).Select()
        '陣列一次寫入Excel
        xlSheet.Range(xlApp.Cells(2, 1), xlApp.Cells(myCols, myRows)).Value = xlApp.Transpose(DataArray)
        '呼叫Excel的巨集
        xlApp.Run("Sample.xlt" & "!Caculater")
        '另存新檔
        xlBook.SaveAs(Directory.GetCurrentDirectory() & "\" & "TETS.XLS")
        '關閉當前活頁簿EXCEL
        xlBook.Close()
        'xlApp.Quit()
        '回收excel
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
        xlApp = Nothing
        xlBook = Nothing
        xlSheet = Nothing
        xlRange = Nothing
        GC.Collect()

 

範例下載:VB.NET讀Excel.rar

這一篇的範例跟[VB6] 讀 / 寫 Excel一樣,跟本是換湯不換藥

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo