データインポート/エクスポートのAccessVBAコード

スポンサーリンク

Accessの中のデータをインポート/エクスポート

記載ルールはあるので、すべてエラーなく行うのはコツが必要ですが、ExcelやテキストなどのデータはVBAでAccessのテーブルに取り込むことができます。

また逆にAccessで作成したテーブルのデータ・集計クエリのデータなどはVBAを用いてExcel形式やcsv形式、txt形式のデータをエクスポートすることができます。

今回はこれらのAccessVBAのデータのインポート/エクスポートに使用するVBAコードを紹介します。

DoCmdオブジェクト

データベース上のオブジェクトをVBAで操作・制御するためのオブジェクトがDoCmdオブジェクトで、DoCmdオブジェクトにはたくさんのメソッドが用意されています。

(私も全然把握しきれていませんがどうやら60種類以上が存在するようです。)

データのインポート/エクスポートはDoCmdオブジェクトのTransferTextメソッド・TransferSpreadsheetメソッドを使用し、以下のように記述します。

TransferTextメソッドはテキストファイルをインポート・エクスポートするのに使用し、TransferSpreadsheetメソッドはExcelファイルをインポート・エクスポートするのに使用します。

TransferTextメソッドの書式

TransferTextメソッドの書式は以下のようになります。

DoCmd.TransferText 変換種類,定義名,テーブル名(クエリ名),作成するファイル名,フィールド名設定

①変換種類

カンマ区切り、固定長などのテキストの種類と、インポートするのかエクスポートするのかを確定する引数です。
よく使われるのは規定値の「acImportDelim」カンマ区切りのデータのインポートか「acExportDelim」カンマ区切りのエクスポートです。

②定義名

定義名を指定する引数ですが、私はあまり使ったことがありません。省略できます。

③テーブル名(クエリ名)

インポートもしくはエクスポートの対象となるテーブルを指定します。
エクスポートの場合、対象にクエリを選択することでクエリの結果を出力することもできます

④ファイル名

インポート・エクスポートの対象となるファイルとパスを指定します。

⑤フィールド名設定

1行目をフィールドとするかどうかを指定する引数です。
Trueを指定すると1行目をフィールド名とし、Falseを指定するか省略すると1行目をフィールド名としない設定になります。

TransferSpreadsheetメソッド

TransferSpreadsheetメソッドの書式は以下のようになります。

DoCmd.TransferSpreadsheet 変換種類,ファイル形式,テーブル名(クエリ名),作成するファイル名,フィールド名設定,Range

①変換種類

インポートするかエクスポートするかを規定します。
テキストファイルのようにカンマ区切りや固定長区切りのような種類があるわけではないので「acImport」「acExport」のどちらかになります。

(リンクテーブルなどを指定する方法もありますがここでは割愛します。)

②ファイル形式

Excelの形式を決定するものです。一番新しいExcelで使用した場合はacSpreadsheetTypeExcel12(”9”でも同じ意味)です。
省略もできるので、同じバージョンのExcelとAccessを使用したパソコンでインポート・エクスポートするなら省略しても良いと思います。

③テーブル名(クエリ名)・④ファイル名・⑤フィールド名設定

テーブル名・ファイル名・フィールド名設定はTransferTextと全く同じですので上記をご参照ください。

⑥Range(インポートのみ)

Excelファイルをインポートする場合のみ、セルの範囲の指定することができます。
シート全体を取り込むなら省略しても大丈夫です。

スポンサーリンク

サンプルコード

TransferSpreadsheetメソッドでExcelのファイルを取り込むサンプルコードはこちらです。
このコードはデスクトップの「元Excelファイル.xlsx」のシート1のA1からF100の範囲をT_取り込みテーブルにインポートします。

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, “T_取り込みテーブル”, “C:\Users\ユーザ名\Desktop\元Excelファイル.xlsx”, True, “Sheets1!A1:F100”

おすすめ書籍 (広告)

コメント