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を取り込もうとすると、以下のようなエラーが出てしまいます。
     これはヘッダー情報がないため、Accessが自動で割り振った「F1」として一つ目のヘッダーを読み込んだけれど、取込み先のテーブルには「F1」カラムがないのでエラーとなります。
     なお、テーブルのカラム名に「F1」を作っておくと取込みは可能です。

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



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

    インポート定義は以下の手順で作成します。

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

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

    5. テキストインポートウィザードが出てくるので、左下の「設定」ボタンをクリックする。
    6. 開いた画面を確認し、「保存」ボタンを押す。

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

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

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




    おすすめ