Accessでリンクテーブルの接続先を一括変更するには
Microsoft Access のお問い合わせで圧倒的に多いのは、PCやファイルサーバをリプレースしたら動かなくなった!というもの。
PCなら4年、サーバなら5年。これが税制上定められている減価償却期間(法定耐用年数)なので、この周期で必ずやってくるのだ。
そして今回は、『パス 'フルパス文字列' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。』というエラーメッセージで停止している。
Windowsのコンピュータ名(ホスト名)が変更されたことに因る影響だ。
VBAに明るいユーザーならここでVBEを起動し、エラーの原因となったフルパス文字列の全検索を試みるのだが、それでも見つからないので、一体どこで定義しているの!?と途方に暮れることになる。
このエラーメッセージで先ず疑うのはリンクテーブルの接続先。
次の操作で、データソースが古いパス名を指していないかチェックしてみよう。
リンクテーブルを多用している場合、いちいち手で直してられないので、マクロで一括変換してしまおう。
Sub データソースパス一括変更()
Dim td As DAO.TableDef
Dim sBefore As String, sAfter As String
Dim sFrom As String, sTo As String
sFrom = "uksrv01w" '検索する文字列
sTo = "uksrv02w" '置換する文字列
For Each td In CurrentDb.TableDefs 'すべてのテーブルで
If td.Attributes And dbAttachedTable Then 'リンクテーブルなら
sBefore = td.Connect '接続文字列を取得
sAfter = Replace(sBefore, sFrom, sTo)
If sBefore <> sAfter Then '置換されていたら
td.Connect = sAfter
td.RefreshLink 'リンクを更新
Debug.Print sBefore & " ==> " & sAfter
End If
End If
Next
End Sub
言うまでもないが、実行前に必ずバックアップを取っておくこと。
複雑な置換には正規表現で対処しても良いだろう。
Author And Source
この問題について(Accessでリンクテーブルの接続先を一括変更するには), 我々は、より多くの情報をここで見つけました https://qiita.com/mindwood/items/58f9ee7d477527bdde52著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .