AccessVBA:【DoCmd】【TransferText メソッド】CSVファイルのインポート・取込み


  • CSVデータをAccessに取り込みたい・インポートしたい
  •  Accessでツールを作る際にはCSVデータをテーブルに取り込んで、加工することがよくあります。
     ここでは「TransferText メソッド」を使ったCSVの取込み方法について、2通りの取り込み方を説明していきます。

    1. CSVにヘッダー情報がある場合
    2. CSVにヘッダー情報がない場合

    ◆事前準備

    ここでは事前にCSVを取り込む先のテーブルを以下のように作っておきます。

    1.CSVにヘッダー情報がある場合

    以下では「サンプル1」テーブルに、FilePathにあるCSVファイル取り込みます。
    このCSVにはヘッダー情報があることが前提です。
    なお、ヘッダー情報と取込み先のテーブルのヘッダー情報が一致したものにデータが追加されます。

    以下はCSVファイルのサンプルです。1行目をヘッダー情報として取り扱います。



    2.CSVにヘッダー情報がない場合

    ここでは上記と同じく、「サンプル1」テーブルに、FilePathにあるCSVファイル取り込みますが、このCSVにはヘッダー情報がない状態です。

    ひとまず取り込むためのコードは以下のようになります。

     しかし、「ヘッダー情報がない状態」でCSVを取り込もうとすると、「インポート定義」を設定していないと以下のようなエラーが出てしまいます。
     これはヘッダー情報がないので、自動で割り振られた「F1」として読み込んだけれど、取込み先のテーブルに「F1」テーブルがないのでエラーとなります。
     なお、テーブルのカラム名を「F1」しておくと取込みは可能です。

    このような状況を解消するために、「インポート定義」というものを利用します。
    次で「インポート定義」の作り方を説名します。



    ◆インポート定義の作り方

    インポート定義を作るには以下のステップを踏みます。

  • 「外部データ」タブの「インポートとリンク」の「テキストファイル」をクリックする。
  • 開いたウィザードを進めていき、その途中でインポート定義を作成します。
    1. ウィザードを開く
    2. Accessのタブの「外部データ」の「インポートとリンク」の「テキストファイル」をクリックする。。

    3. ウィザードを進めていく(1)
    4. 「参照」ボタンを押して、取り込みたいCSVを選択する。
      次に「レコードのコピーを次のテーブルに追加する」にチェックを入れて、取り込みたいテーブルを選択すし、「OK」を押す。

    5. ウィザードを進めていく(2)
    6. テキストインポートウィザードが出てくるので、左下の「設定」ボタンをクリックする。

    7. ウィザードを進めていく(3)
    8. 開いた画面を確認し、「保存」ボタンを押す。

      そうするとインポート定義名を指定するところが出てくるので、任意の名称にして「OK」を押す。
      ※インポート定義名は忘れないようにメモしておく。忘れた場合、ウィザードをまた開いて、「保存」ではなく、「定義」ボタンを押すと確認できる。

      これでインポート定義は作成されました。
      この後は「次へ」などを押して、ひとまずこのウィザードを終了させる。
      もし取込みが失敗していたら、再度ウィザードを開いて、インポート定義を見直す。

     これでインポート定義ができたので、「TransferText メソッド」でインポート定義を使うことが可能になります。
     以下、上述のコードと同じものですが、7行目で作成したインポート定義を使っています。



    おすすめ