Access 2013 リンク テーブルのストアド定義(接続情報)を変更は今までは手動で行っていました。
毎回毎回「面倒だなー」と思っていましたが、msdnで調べていたところ楽できるオブジェクトを見つけました。
今回は、VBAを使ってリンク テーブルのストアド定義をテスト環境から本番環境へ一度に変更する方法をメモ。
VBAを使うため、ワンクリックで切り替えることが出来るので非常に便利です。
サンプル:リンク テーブルを取得する
下記サンプルは、dbo_から始まるリンク テーブルを抽出します。Sub GetLinkTableInfo() Dim daoDB As DAO.Database, daoTBL As DAO.TableDef Set daoDB = CurrentDb For Each daoTBL In daoDB.TableDefs If InStr(daoTBL.Name, "dbo_") > 0 Then Debug.Print daoTBL.Name, daoTBL.Connect End If Next End Sub
実行結果は下記のようになります。
サンプル:リンク テーブルの接続先を変更する
元に戻せるよう、変更前のストアド定義を保存しておきましょう。環境によって、「Mid(daoTBL.Name, 5)」を変更する必要があるかもしれません。
ご注意ください。
Sub ChangeLinkTableConnect() Dim daoDB As DAO.Database, daoTBL As DAO.TableDef Dim strServer, strDatabase As String Set daoDB = CurrentDb strServer = "TESTSERVER" strDatabase = "TESTDB" For Each daoTBL In daoDB.TableDefs If InStr(daoTBL.Name, "dbo_") > 0 Then On Error GoTo DB_ERR 'Debug.Print daoTBL.Name, daoTBL.Connect daoTBL.Connect = "ODBC;Trusted_Connection=Yes;APP=Microsoft Office 2013" & _ ";DSN=" & strServer & _ ";DATABASE=" & strDatabase & _ ";TABLE=" & Mid(daoTBL.Name, 5) & ";" daoTBL.RefreshLink 'Debug.Print "->" & daoTBL.Name, daoTBL.Connect End If Next Exit Sub DB_ERR: MsgBox Err.Description End Sub