我的目標是將某些數據從Excel文件導入到Access DB中。爲了做到這一點,我使用DAO這樣的:Excel工作表名稱不允許使用VBA將數據導入到Access中 - DAO
Debug.Print "Starting process to import the " & numberOfDaysToImport & " missing days"
Set sourceDB = OpenDatabase(c_sourceFile_austrianNetImports, False, True, "Excel 8.0;")
DoEvents
Set rs = sourceDB.OpenRecordset(c_sqlRetrieveAustriaNetImports)
Debug.Print "Recordset Field Count = " & rs.Fields.Count
c_source_austrianNetImports
和c_sqlRetrieveAustriaNetImports
分別是,包含路徑到Excel中的源文件和用於檢索數據的SQL Select語句的字符串變量。
我的問題是,當Excel源文件的工作表名稱以下劃線結束時,SQL Select查詢不起作用,VBA崩潰。舉例來說,如果從中我要檢索數據的工作表被稱爲EEX_EXC_Scheduled_PWR_AUT_H1_A_
和c_sqlRetrieveAustriaNetImports
是SELECT * FROM [EEX_EXC_Scheduled_PWR_AUT_H1_A_$A1:H65536]
然後VBA與消息
- 運行時錯誤「3011」 Microsoft Jet數據庫引擎找不到對象「崩潰EEX_EXC_Scheduled_PWR_AUT_H1_A_ $ A1:H65536'確保對象存在,並且正確拼寫了它的名稱和路徑名。
如果我通過刪除最後的下劃線來修改工作表名稱和SQL語句,那麼它就可以工作。我也試圖通過使用打開記錄集
Set rs = sourceDB.OpenRecordset("Sheet$13")
但我仍然收到相同的錯誤消息。
我不允許修改工作表的名稱。我怎樣才能使用原始名稱(最後包含_的那個)獲取數據?
謝謝。
我在網上看到了一些類似問題的線程,但沒有真正的解決方案。一個人認爲他們通過壓縮和修復他們的數據庫來修復它。 – 2013-03-06 14:47:40