鏈接表可能非常有用(儘管並非總是如此)——尤其是當您處理定期更改的外部信息時。 一個典型的例子可能是供應商讓您訪問他們當前的每月價格文件。 但是當他們下個月發布文件,文件名從“Pricelist-01-01-2016”變為“Pricelist-01-02-2016”時會發生什麼? 將發生的第一件事是您的鏈接將斷開,因此您必須手動更新它。 每次他們更改文件名。 這也適用於表名(當然!)。 你問有沒有辦法快速輕鬆地做到這一點? 我們很高興您提出了這個問題——請繼續閱讀並了解如何……
場景設置——場景
在本文中,我將使用一個虛構的場景——但我相信你會很快認出這個場景!
每個月,Acme Trading 都會向我們發送更新的所有耗材的價目表 DataNumen. 為了知道我們每個月將在文具上花費多少,我們鏈接到我們辦公室管理數據庫中的那個文件。
問題是,即使文件格式保持不變,文件名也會每月更改。上個月是“2017年1月辦公用品成本.xls”,這個月是“2017年2月辦公用品成本.xls”。
沒有太大的變化我相信你會同意,但除非我們經歷手動重命名文件的麻煩(一旦我們將舊文件移開或刪除它),或者經歷通過 Access 中的鏈接表管理器重新鏈接表。
因為我們不想這樣做,所以我們創建了以下代碼來代替 - 我相信你會看到更容易:
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
解釋代碼
如您所見,我們傳遞了(已連結的)表名,以及該表要連結到的新檔案名稱。檔案名稱應包含檔案的完整路徑。您一開始可能會遇到的一個問題是,如何取得正確的連接字串格式,以便將其放入「newConnect」變數中。雖然有很多方法可以找到正確的格式,但我發現最簡單的方法之一是直接查看當前連結表的連接字串。為此,只需在「Set objTableDef = objDB.TableDefs(tableName)」行的正下方新增以下程式碼行:
Debug.Print (objTableDef.Connect)
這會將現有的連接字符串打印到代碼編輯器的調試/立即窗口中(如果它還不可見,請在 VBA 代碼編輯器屏幕內按 CTRL-G 以在運行代碼之前切換立即窗口的可見性。
一個警告
與往常一樣,請不要忘記,雖然上面的代碼片段可以幫助您在需要更改錶鍊接到的文件時節省時間,但如果您遇到任何問題,它無法幫助您 訪問文件損壞,所以請確保您保留備份並知道如果所有其他方法都失敗了該去哪裡。
作者簡介:
Mitchell Pond是 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 SQL 損壞 和excel恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM