2014-07-19 42 views
0

我有幾個表通過Microsoft Query連接到訪問數據庫。如果我移動訪問文件的位置,或者需要更新源位置的方法,特別是因爲我需要與其他人共享此文件。如何更改excel中的MS查詢數據源與vba?

所有的連接都是ODBC並且來自同一個訪問文件。

回答

0

由於所有的連接都是統一的,我循環每一個連接,並用通過windows文件瀏覽器選擇的文件替換當前源文件。

Sub SwitchODBCSource() 
Dim conn As WorkbookConnection 
Dim sOldConnection As String, sNewConnection As String 


getfilePath = Application.GetOpenFilename() 
FileType = ".accdb" 
    If InStr(getfilePath, FileType) Then 
     fileName = Dir(getfilePath) 
     filePath = Replace(getfilePath, "\" & fileName, "") 



     For Each conn In ActiveWorkbook.Connections 
      With conn 
       conn.ODBCConnection.BackgroundQuery = False 

       conn.ODBCConnection.CommandType = xlCmdSql 
       conn.ODBCConnection.Connection = Array(Array(_ 
       "ODBC;DSN=MS Access Database;DBQ=" & filePath & "\" & fileName & ";DefaultDir=" _ 
       ), Array(_ 
       filePath & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _ 
       )) 

       End With 
     Next conn 
     ActiveWorkbook.RefreshAll 
     Call Sheet1.dropDown 
     Set conn = Nothing 
    Else 
    MsgBox ("Can only use " & FileType & " files") 
    End If 
End Sub