TransferSpraedsheet 基本構文と引数の解説

Access VBA の DoCmd.TransferSpreadsheet メソッドは、Excelファイルとのインポート/エクスポートを行うための便利なメソッドです。Excel形式のデータをAccessに読み込んだり、テーブルやクエリの結果をExcelに出力するのに使います。


目次

🔹 基本構文

DoCmd.TransferSpreadsheet TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA

🔸 引数の解説

引数名説明
TransferTypeAcDataTransferTypeインポート/エクスポートの種類(下記参照)
SpreadsheetTypeAcSpreadSheetTypeExcelのバージョン形式(例:acSpreadsheetTypeExcel12Xml
TableNameStringインポート先/エクスポート元のテーブル名またはクエリ名
FileNameStringExcelファイルの完全パス
HasFieldNamesBoolean最初の行がフィールド名かどうか(True = ヘッダーあり)
RangeString (省略可)Excel上のセル範囲またはシート名(例:”Sheet1!A1:D20″)
UseOABoolean (省略可)Office Access形式での処理指定(通常は省略でOK)

🔸 主な定数

TransferType(データ転送の種類)

定数名説明
acImport0Excel から Access にインポート
acExport1Access から Excel にエクスポート
acLink2Excel をリンクテーブルとして接続

SpreadsheetType(Excel の形式)

定数名説明
acSpreadsheetTypeExcel12XmlExcel 2007以降(.xlsx)
acSpreadsheetTypeExcel9Excel 2000/2002/2003
acSpreadsheetTypeExcel8Excel 97
acSpreadsheetTypeExcel5Excel 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 を使うのが一般的です。

よかったらシェアしてね!
目次