web-dev-qa-db-ja.com

VBAを使用したMS Accessリンクテーブル

1つのMS Accessデータベース(* .mdbまたは* .accdb)のテーブルをVBAの別のAccessデータベースにリンクするにはどうすればよいですか?

基本的に、VBAを使用して、外部データウィザードの機能を複製するだけでした。

私はこれをグーグルで調べましたが、テーブルを更新または再リンクする方法の多くの例と、SQLデータベースへのリンクの多くの例がありますが、Accessデータベース間のテーブルの単純なリンクはほとんどありません。

10
Mark

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"
11
HansUp

実際には非常に簡単です。新しい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;
3
DataWriter