2011年12月6日 星期二

VB.net 讀寫 Excel 資料 (多個開啟中的 Excel 檔)

VB.net 讀寫 Excel 資料 這一篇文章中,介紹了直接讀寫目前開啟中的 Excel 檔案。

不過這時後如果開啟中的 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 資料

沒有留言:

張貼留言

留言請留下大名~謝謝。

Related Posts Plugin for WordPress, Blogger...