[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