2016-06-21 23 views
0

我在嘗試一些更加奇特的事情,並且在訪問論壇上發佈了帖子,在那裏我沒有任何迴應,也沒有訪問程序員,在那裏我獲得了更多閱讀材料的鏈接,但是沒有幫助我 - 可能是由於我缺乏VBA的專業知識。 我已經做了很多其他的編程,比如PHP和Arduino,但是VBA對於我來說是新的,雖然我一直在觀看幾個小時的視頻,但它們並不完全涵蓋我想要做的事情。使用VBA更改鏈接到Access 2011的Excel文件的路徑

經過4天的研究失敗的嘗試,我簡化了我的方法,我將不勝感激一些真正的幫助與實際的代碼。

場景: 我有多個Excel源文件,每個文件包含9個選項卡。 所有源文件都位於同一個目錄中(與數據庫不在同一目錄中) 只有一個源連接。 源文件的每個選項卡都是Access中的鏈接表。

目標: 我希望定期切換源文件。

方法: 我只想替換使用特定文件的9張/選項卡中的每一個的連接文件屬性(即完整文件路徑)。 完整路徑必須從我的表單中「拾起」並應用於事件,例如關閉表格。

進度: 我已經構建了一個表單,可以在其中輸入要使用的文件名,並計算相關文件的完整路徑。 我在窗體上有一個按鈕,用於關閉窗體。

代碼:

Private Sub Form_Close() 
Dim dbs As Database 
Dim tdf As TableDef 
Dim sfl As String 
Dim basePath As String 
Dim sName As String 

Set dbs = CurrentDb 
Set sfl = "SourceData_" 
Set sName = "JoeSmith" 
Set basePath = "D:\Databases\BOM Consolidator\data_source" 

' Loop through all tables in the database. 
For Each tdf In dbs.TableDefs 
    If InStr(10, tdf.Connect, sfl, 1) > 10 Then 
     tdf.Connect = ";DATABASE=" & basePath & sfl & sName & "\" & dbs 
     Err = 0 
     On Error Resume Next 
     tdf.RefreshLink  ' Relink the table. 
     If Err <> 0 Then 
     End If 
    End If 
Next tdf End Sub 

在上面,我是在進入路徑等直接只是爲了得到它第一個工作日。 訪問愣:( 幫助,將不勝感激。 發佈此之前,我嘗試重新啓動。

+0

您是否嘗試過單步執行代碼並對其進行調試,以便確定訪問開始凍結的位置? – lokusking

回答

0

它沒有凍結後重新啓動。 它說我有一個丟失的對象。 第一行以黃色突出顯示,所以我認爲一定要在圓括號內,但不知道是什麼。

如果它是一個函數,我通常會把一個未在函數內部聲明的變量,這是一個子例程,我沒有期待它要求什麼...

最終我會把它變成一個函數,soth在我可以提供文件名。

第一行需要哪些線索?...?

哦,我也使用「代碼生成器」 - 是關閉表單使用正確的選項?