不過這時後如果開啟中的 Excel 檔案不只單一個的時候,就會有可能發生讀寫到錯誤檔案的情況。
這邊引用一下 MS 的技術文件說明:
--
GetObject
GetObject 用於附加至自動化伺服器的執行中執行個體。有幾種不同的方法可以呼叫 GetObject,但是針對 Microsoft Office 應用程式建議的語法如下:
set xlApp = GetObject(, "Excel.Application")
如果執行此程式碼時有 Microsoft Excel 的執行個體正在執行,則您可以透過 xlApp 變數存取執行中執行個體的物件模型。如果沒有執行中的執行個體,您會收到下列可設陷執行階段錯誤訊息:
執行階段錯誤 '429':
ActiveX component can't create object (ActiveX 元件無法建立物件)
如果有多個 Microsoft Excel 的執行個體正在執行,GetObject 會附加至最先啟動的執行個體。如果您接著關閉第一個執行個體,另一個對 GetObject 的呼叫會附加至先前啟動的第二個執行個體,以此類推。
如果您知道執行個體中開啟之文件的名稱,則可以附加至特定的執行個體。例如,如果有一個 Excel 的執行個體在執行中,並開啟了名為 Book2 的活頁簿,則即使該執行個體並非最早啟動的執行個體,下列程式碼仍會成功地附加至該執行個體:
Set xlApp = GetObject("Book2").Application
--
為了試出直接對「已知路徑、檔名」的 Excel 檔做直接讀寫,試著用了上面的程式碼後,還是沒辦法成功,所以只好再另外找一些方法…最後這個辦法是可行的:
xlBook = GetObject("C:\test.xls")
xlSheet = xlBook.ActiveSheet
MessageBox.Show(xlSheet.Cells(1, 1).value)
上面的例子就是針對已開啟的 c:\test.xls 這個 Excel 檔案直接作連結…而之後的讀寫動作就請參考之前的文章囉。
VB.net 讀寫 Excel 資料
沒有留言:
張貼留言
留言請留下大名~謝謝。