首先:我正在使用Excel 2007,但代碼也必須適用於Excel 2003。Excel VBA無法打開工作簿
我的問題如下:我需要訪問不同工作簿中的單元格,這可能會被關閉。下面的代碼可以在整個網絡上找到:
Function Foo()
Dim cell As Range
Dim wbk As Workbook
Set wbk = Workbooks.Open("correct absolute path")
' wbk is Nothing here so the next statement fails.
Set cell = wbk.Worksheets("Sheet1").Range("A1")
Foo = cell.Value
wbk.Close
End Function
可悲的是,WBK是開放的語句之後沒有什麼(我很樂意提供更好的錯誤消息,但不知道我怎麼會做什麼;什麼我會給一個真正的IDE和一個有用的語言:/)。絕對路徑是正確的並且指向一個有效的excel xlsx文件。
另外我假設這樣做的最好方法是「緩存」工作簿,而不是每次調用函數時打開/關閉它?任何可能出現的問題(除了在工作簿已經打開時必須處理這種情況)?
圖像,同時通過加強:
您不會收到錯誤消息,並且「Open」語句只返回Nothing?我試過重試你的問題失敗了。你將不得不給我們更多的細節和上下文。 –
@ Jean-FrançoisCorbett要說「不」,錯誤信息就是說,excel只是繼續執行。我看了一下,但找不到任何'GetLastError()'或類似的'On Error Goto'沒有指定任何異常對象?引用的東西基本上是整個功能,但我將其改爲完整的功能,可能有幫助。 – Voo
立即窗口中的「?Err.Number」和「?Err.Description」將爲您提供有關運行時錯誤的信息。您需要爲On Error Goto提供錯誤處理程序。當你說「下一個語句失敗」時,你的意思是你在那裏得到一個運行時錯誤?如果是這樣,什麼?如果不是,Cell是否也等於沒有?您是否嘗試過一個非常簡單的路徑,例如,「我的文檔」中的文件? –