Access VBA の DoCmd.TransferSpreadsheet
メソッドは、Excelファイルとのインポート/エクスポートを行うための便利なメソッドです。Excel形式のデータをAccessに読み込んだり、テーブルやクエリの結果をExcelに出力するのに使います。
目次
🔹 基本構文
DoCmd.TransferSpreadsheet TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA
🔸 引数の解説
引数名 | 型 | 説明 |
---|
TransferType | AcDataTransferType | インポート/エクスポートの種類(下記参照) |
SpreadsheetType | AcSpreadSheetType | Excelのバージョン形式(例:acSpreadsheetTypeExcel12Xml ) |
TableName | String | インポート先/エクスポート元のテーブル名またはクエリ名 |
FileName | String | Excelファイルの完全パス |
HasFieldNames | Boolean | 最初の行がフィールド名かどうか(True = ヘッダーあり) |
Range | String (省略可) | Excel上のセル範囲またはシート名(例:”Sheet1!A1:D20″) |
UseOA | Boolean (省略可) | Office Access形式での処理指定(通常は省略でOK) |
🔸 主な定数
TransferType
(データ転送の種類)
定数名 | 値 | 説明 |
---|
acImport | 0 | Excel から Access にインポート |
acExport | 1 | Access から Excel にエクスポート |
acLink | 2 | Excel をリンクテーブルとして接続 |
SpreadsheetType
(Excel の形式)
定数名 | 説明 |
---|
acSpreadsheetTypeExcel12Xml | Excel 2007以降(.xlsx) |
acSpreadsheetTypeExcel9 | Excel 2000/2002/2003 |
acSpreadsheetTypeExcel8 | Excel 97 |
acSpreadsheetTypeExcel5 | Excel 5.0/95 |
🔹 使用例
✅ Excelファイルをテーブルにインポート
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
"tblSales", "C:\data\sales.xlsx", True
✅ テーブルをExcelにエクスポート(フィールド名あり)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
"tblCustomers", "C:\export\customers.xlsx", True
✅ 特定のシート範囲を指定してインポート
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
"tblTemp", "C:\data\data.xlsx", True, "Sheet1!A1:D20"
✅ 補足
Range
を省略すると、最初のシート全体が対象になります。
- クエリ名を指定することも可能(エクスポート時)。
.xlsx
形式の読み書きには acSpreadsheetTypeExcel12Xml
を使うのが一般的です。