VBA:AccessでCSVのリンクテーブルの接続先(リンク元)の変更方法(DAO)
1.やりたいこと
AccessのCSVのリンクテーブルの接続先・リンク元のパスを変更したい。
※カンマ区切りだけれど、テキスト形式で保存されているものでもリンク更新できます。
2.サンプルコード
サンプルコードは以下となります。
実行するとAccessのリンクテーブルの接続先・リンク元が変更されます。
(1)設定等考えずにリンク更新をする場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Option Explicit Function RefreshLink_CSV() Dim dbs As DAO.Database Dim tdf As DAO.TableDef Dim FPath As String Set dbs = CurrentDb '変更したいリンクテーブルを指定' Set tdf = dbs.TableDefs("リンクテーブル_CSV") '変更したいCSVファイルのパスをフォルダまで指定する。ファイル名はリンクテーブルで持っているので指定しなくていい。' FPath = "C:\Users\xxxx\テストデータ" '//シンプル版' tdf.Connect = "TEXT;FMT=Delimited;HDR=YES;ACCDB=YES;DATABASE=" & FPath & ";" 'この一行を下記の(2)や(3)に置き換えたり、組み合わせたりすることで取込み方法を変更できます。' 'HDR:Yesは1行目をヘッダーとする。Noは1行目からデータとしてリンクを貼るのでカラムは「F1」とかになる。' 'リンクテーブルを更新' tdf.RefreshLink Set dbs = Nothing Set tdf = Nothing End Sub |
(2)定義ファイルを利用する場合
定義ファイルを利用した場合のサンプルコードは以下となります。
定義ファイルは事前に設定しておいてください。
1 2 3 4 5 |
'//定義ファイルを利用する場合' '定義の指定も可能。設定したい場合だけ。' Dim strDef As String' strDef = "定義_CSVリンクテーブル"''定義ファイルを指定' tdf.Connect = "Text;FMT=Delimited;HDR=YES;ACCDB=YES;DSN=" & strDef & ";DATABASE=" & FPath & ";" |
(3)文字コードを指定したい場合
文字コードを指定したい場合のサンプルコードは以下となります。
1 2 3 4 |
'//文字コードを指定したい場合' '「CharacterSet=932」を追加すると「Shift_JIS」 (CP932)を指定できる。' '「65001」は「UTF-8」となる。' tdf.Connect = "TEXT;FMT=Delimited;HDR=YES;CharacterSet=932;ACCDB=YES;DATABASE=" & FPath & ";" |
◆関連記事

AccessVBA:【DAO】テーブルのインデックス作成・削除(CREATE INDEX・UNIQUE INDEX・DROP INDEX)
【VBA】DAOを使ったテーブルのインデックスの作成と削除の方法について