【AccessVBA】AccessのデータベースにあるテーブルにCSVファイルのデータをインポートするには

この記事では、AccessのデータベースにあるテーブルにCSVファイルのデータをインポートする方法についてご説明します。

【動画】AccessVBAのモジュールをすべてエクスポートする実際の動き

本題に入る前に、まずは次の動画をご覧ください。

TransferTextメソッドを実行してCSVファイルのデータをテーブルにインポートしています。

コード作成の流れ

STEP.1
TransferTextメソッドを実行してCSVファイルのデータをテーブルにインポートする
TransferTextメソッドを実行してCSVファイルのデータをテーブルにインポートします。
TransferTextメソッドには、インポートするCSVファイルのフルパスや、インポート先のテーブル名などを指定します。

AccessのデータベースファイルとCSVファイルの例

今回は次のAccessのデータベースファイルとCSVファイルを用意しました。

Accessのデータベースファイル

Accessのデータベースファイルには「T_社員」というテーブルが存在しています。

この「T_社員」というテーブルにCSVファイルのデータをインポートします。

CSVファイル

今回は以下のCSVファイルのデータを「T_社員」というテーブルにインポートします。

各データの値にはカンマ区切りで「”」(ダブルクォーテーション)で囲んであります。

また、CSVファイルの文字コードはShift_JISです。

マクロを実行すると、「T_社員」というテーブルにCSVファイルのデータがインポートされます。

コードの例

Option Compare Database
Option Explicit

Private Sub btn_exec_Click()

    Dim strPath     As String       'インポートデータのあるCSVファイルの格納先用変数
    
    'インポート先のテーブル名を取得する
    Const impTbl As String = "T_社員"

    'インポートデータのあるCSVファイルの格納先を取得する
    '⇒CSVファイルの格納先はAccessのデータベースファイルと同じ場所
    strPath = Application.CurrentProject.Path & "\data.csv"

    'CSVファイルをテーブルにインポートする
    DoCmd.TransferText TransferType:=acImportDelim, _
                       TableName:=impTbl, _
                       FileName:=strPath, _
                       HasFieldNames:=True
        
End Sub

注目すべきコード

見て頂きたいのは16行目から19行目です。

    'CSVファイルをテーブルにインポートする
    DoCmd.TransferText TransferType:=acImportDelim, _
                       TableName:=impTbl, _
                       FileName:=strPath, _
                       HasFieldNames:=True

コードの説明

以上のコードは、TransferTextメソッドを実行してCSVファイルのデータをテーブルにインポートする処理のコードです。

TransferTextメソッドには、インポートするCSVファイルのフルパスや、インポート先のテーブル名を指定します。

TransferType

インポートするCSVファイルの形式を指定する引数の項目です。

CSVファイルのデータは区切り文字で区切られたファイルなので、acImportDelimを指定しています。(acImportDelimは区切り文字で区切られたテキストファイルをインポートするための定数)

TableName

TableNameにはデータをインポート先のテーブル名を指定します。

テーブル名は9行目で取得しています。

    'インポート先のテーブル名を取得する
    Const impTbl As String = "T_社員"

FileName

FileNameにはデータを取り込むCSVファイルのフルパスを指定します。

CSVファイルのフルパスは13行目で取得しています。

    'インポートデータのあるCSVファイルの格納先を取得する
    '⇒CSVファイルの格納先はAccessのデータベースファイルと同じ場所
    strPath = Application.CurrentProject.Path & "\data.csv"

HasFieldNames

HasFieldNamesは、インポートするCSVファイルの最初の行がフィールド名を含むかどうかを設定します。Trueの場合、最初の行はフィールド名であるとみなされます。(2行目からデータとみなします)

Falseなら1行目からデータとみなします。(ヘッダは無しと判断)

動作確認

AccessのデータベースファイルとCSVファイルの例」をご覧ください。

最後に

この記事では、AccessのデータベースにあるテーブルにCSVファイルのデータをインポートする方法についてご説明します。

AccessのデータベースにあるテーブルにCSVファイルのデータをインポートしたいときは本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら