2012-07-24 166 views
1

我有一個主要在Access中運行的自動化進程。但是,在中間,它將一些數據放入Excel中以將其擦除爲正確的格式(它比在A​​ccess中執行快得多),並最終打開另一個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 

我不知道如何解決這個問題!任何幫助將非常感激。

回答

2

這可能是因爲您的訪問數據庫仍處於打開狀態,新的excel文件需要從中恢復數據。數據庫在發生這種情況時無法打開,這是爲什麼excel錯誤並要求另一個位置連接的原因。

所以,我會努力通過內部訪問生成所需的擦洗可能。

+0

+1:這讓我想起了近期出現的類似問題。顯然,Access/Excel的一個限制似乎是從Excel訪問調用的查詢表似乎期望/需要獨佔訪問數據庫。既然你是從Access調用這個,你最好的選擇將是按照用戶的建議去做,並找出如何使它在Access本身內工作......無論如何我會推薦它。如果你選擇走這條路線並遇到問題,幫助永遠是一個問題。只要確保顯示你的工作。 – 2012-08-29 19:38:47

+0

感謝您的回覆。錯誤不會發生太多,所以它實際上大部分時間都有效。因此,說「這個數據庫不能公開時」我認爲是不準確的。至於使其在Access中工作,這是一個好主意。我們實際上在Access中進行了一個類似的過程,用於清理不同部分的數據。所以,它在Access中工作得很好,但速度要慢很多。而且,當我打開第二個Excel文件將數據導出到Excel時,錯誤仍會發生。這是必要的,因爲我們通過大量的計算來完成數據。 – Graphth 2012-08-29 23:02:17