Access Tips

◆一括リンク変更

多数のテーブルの「リンク」を変更したい場合がある。
数が多くなると「リンクマネージャ」では対応しきれない。

簡単なVBAを作ったので、記載しときます。

Private Sub コマンド166_Click()

 Dim dbpath As String
 dbpath = SelectFile_FileDialog("\\landisk\disk\db\")

 If dbpath = "" Then
  Exit Sub
 End If

 RC = MsgBox(dbpath & " にリンクを設定しなおします。", 1)

 If RC = 1 Then
  Call linkset(dbpath, "t00基本情報")
  Call linkset(dbpath, "t013日付")

   '続けて同様にテーブル名を指定していく
  'テーブル名は、次項のACCESSのオブジェクト一覧の表示の方法で取得すると楽ちん

  MsgBox "リンク設定終了"
 End If

End Sub
Sub linkset(dbpath As String, tblName As String)
 Set db = CurrentDb
 Set tb = db.TableDefs(tblName)
 tb.Connect = ";DATABASE=" & dbpath & ";TABLE=" & tblName
 tb.RefreshLink
End Sub
Public Function Public Function SelectFile_FileDialog(firstpath) As String
    'メニュー「ツール」-「参照設定」で「Microsoft Office 12.0 Object Library」にチェックしておく
    Dim dlgfolder As FileDialog
    Application.FileDialog(msoFileDialogFilePicker).Title = "ファイルを選択してください"
    Application.FileDialog(msoFileDialogFilePicker).InitialFileName = firstpath
    Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
    If Application.FileDialog(msoFileDialogFilePicker).show = -1 Then
        SelectFile_FileDialog = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
    Else
        SelectFile_FileDialog = ""
    End If
End Function

SelectFile_FileDialogは下記のサイトを参考にさせてもらった。
http://www.feedsoft.net/access/tips/tips34.html

◆ACCESSのオブジェクト一覧の表示

テーブル名などをテキストで取得したい場合、下記のSQLが便利
リンクはTYPEは6のようです。

SELECT Type, Name
FROM MsysObjects
ORDER BY Type DESC , Name;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です