1つのMS Accessデータベース(* .mdbまたは* .accdb)のテーブルをVBAの別のAccessデータベースにリンクするにはどうすればよいですか?
基本的に、VBAを使用して、外部データウィザードの機能を複製するだけでした。
私はこれをグーグルで調べましたが、テーブルを更新または再リンクする方法の多くの例と、SQLデータベースへのリンクの多くの例がありますが、Accessデータベース間のテーブルの単純なリンクはほとんどありません。
DoCmd.TransferDatabase Method を使用して、別のAccessデータベースのテーブルへのリンクを作成できます。
DoCmd.TransferDatabase TransferType:=acLink, _
DatabaseType:="Microsoft Access", _
DatabaseName:="C:\share\Access\Example Database.accdb", _
ObjectType:=acTable, _
Source:="Addresses", _
Destination:="Addresses_link"
どのオプションがどれであるかを追跡しやすくなることを期待して、オプション名を含めました。しかし、それが冗長すぎると思われる場合は、オプション名を省略して、すべてを1行で実行できます。
DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\share\Access\Example Database.accdb", acTable , "Addresses", "Addresses_link"
実際には非常に簡単です。新しいtabledefを作成し、その.connectプロパティを他のAccessデータベースにリンクするODBC接続文字列に設定するだけです。
Private Function LinkTable(LinkedTableName As String, TableToLink As String, connectString As String) As Boolean
Dim tdf As New dao.TableDef
On Error GoTo LinkTable_Error
With CurrentDb
.TableDefs.Refresh
Set tdf = .CreateTableDef(LinkedTableName)
tdf.Connect = connectString
tdf.SourceTableName = TableToLink
.TableDefs.Append tdf
.TableDefs.Refresh
End With
Set tdf = Nothing
End Function
接続文字列は次のようになります( connectionstrings.com から取得):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;