我有一個主要在Access中運行的自動化進程。但是,在中間,它將一些數據放入Excel中以將其擦除爲正確的格式(它比在Access中執行快得多),並最終打開另一個Excel文件並將來自某些Access查詢的數據放入Excel文件。對於從Excel到Access的這些連接,我通過進入Excel並執行數據 - >獲取外部數據 - >訪問,然後選擇訪問文件和查詢,我想從中獲取數據並將Excel把它變成表格。從Access 2007中的查詢獲取Excel 2007中的表數據
所以,我這樣做了一次,然後我希望能夠運行這個簡單刷新數據的自動化過程。要做到數據的這個清爽,我做這行:
Worksheets("Data").Range("A1").ListObject.QueryTable.Refresh _
BackgroundQuery:=False
的問題是,有一半的時間(我想不通爲什麼它做它一個時間,而不是另一種),它說「你想連接到路徑\文件名?「當然,我知道,桌面如何刷新?所以,這停止了自動化。即使我點擊是,我仍然無法繼續。如果我單擊是,它會打開數據鏈接屬性。點擊確定後,它會打開一個標題爲「請輸入Microsoft Office Access數據庫引擎OLE DB初始化信息」的窗口。它有它的信息,包括我想訪問的數據源的路徑和名稱,但是如果我點擊確定,它說,對不起,沒有工作,你想要連接到(然後它列出確切的它剛剛說的相同的路徑和文件名稱不起作用)。它重複我剛剛提到的步驟,然後錯誤地出現。
在如此重要的情況下,這裏是(基本思想)的代碼,我用它來從Access連接到Excel:
Public Sub ExportToExcel()
Dim ObjXLApp As Object
Dim ObjXLBook As Object
Dim ExcelFilePath As String
ExcelFilePath = CurrentProject.Path & "\"
Set ObjXLApp = CreateObject("Excel.Application")
Set ObjXLBook = ObjXLApp.Workbooks.Open(ExcelFilePath & "filename.xlsm")
ObjXLApp.Visible = True
' Runs the "DataSetUp" macro in the Excel file.
ObjXLApp.Run ("DataSetUp")
' The DataSetUp macro saves the Excel file
' Quit Excel
ObjXLApp.Quit
' Free the memory
Set ObjXLBook = Nothing
Set ObjXLApp = Nothing
End Sub
我不知道如何解決這個問題!任何幫助將非常感激。
+1:這讓我想起了近期出現的類似問題。顯然,Access/Excel的一個限制似乎是從Excel訪問調用的查詢表似乎期望/需要獨佔訪問數據庫。既然你是從Access調用這個,你最好的選擇將是按照用戶的建議去做,並找出如何使它在Access本身內工作......無論如何我會推薦它。如果你選擇走這條路線並遇到問題,幫助永遠是一個問題。只要確保顯示你的工作。 – 2012-08-29 19:38:47
感謝您的回覆。錯誤不會發生太多,所以它實際上大部分時間都有效。因此,說「這個數據庫不能公開時」我認爲是不準確的。至於使其在Access中工作,這是一個好主意。我們實際上在Access中進行了一個類似的過程,用於清理不同部分的數據。所以,它在Access中工作得很好,但速度要慢很多。而且,當我打開第二個Excel文件將數據導出到Excel時,錯誤仍會發生。這是必要的,因爲我們通過大量的計算來完成數據。 – Graphth 2012-08-29 23:02:17