access-vba-DoCmd-TransferSpreadshee

DoCmd.TransferSpreadsheetの使い方

DoCmd.TransferSpreadsheet は、Access VBAで Access と Excel 間のデータをインポート/エクスポートするための便利なメソッドです。


目次

✅ 概要

DoCmd.TransferSpreadsheet は、Access の テーブル / クエリExcel ファイルの間でデータを読み書き(インポート・エクスポート)するために使用します。


✅ 基本構文

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

✅ パラメータ一覧

パラメータ名必須説明
TransferType転送の種類(acExport, acImport, acLink
SpreadsheetTypeExcelのバージョン形式(例:acSpreadsheetTypeExcel12Xml
TableNameテーブル名またはクエリ名(エクスポート対象 / インポート先)
FileName対象Excelファイルのパス(.xlsx, .xls など)
HasFieldNames×先頭行にフィールド名を含むか (True/False)
Range×Excelのセル範囲やシート名(例:"Sheet1$A1:E100"

✅ よく使う例

▶ エクスポート:クエリをExcelファイルに出力

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
    "クエリ_ユーザー一覧", "C:\Users\Public\ユーザー一覧.xlsx", True
  • クエリ「クエリ_ユーザー一覧」の内容を
  • Excelファイルにエクスポート(拡張子 .xlsx
  • フィールド名あり(True

▶ インポート:Excelファイルからテーブルに読み込み

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
    "ユーザー一時取込", "C:\Users\Public\インポート対象.xlsx", True
  • Excelファイルからデータを読み込み
  • ユーザー一時取込 というAccessテーブルに挿入
  • 1行目がフィールド名(True

✅ TransferType の選択肢

内容
acImportExcel → Access(インポート)
acExportAccess → Excel(エクスポート)
acLinkExcelファイルをリンクテーブルとして接続

✅ SpreadsheetType(バージョン)一覧

内容
acSpreadsheetTypeExcel12Excel 2007(.xls)
acSpreadsheetTypeExcel12XmlExcel 2007以降(.xlsx)
acSpreadsheetTypeExcel9Excel 2000

✅ 注意点・制限事項

  • Excelファイルが開かれていると転送エラーになることがある
  • エクスポート時は クエリ の方が安定(フィルターや結合に対応)
  • インポートは Access 側にテーブルが存在していないと自動作成される

✅ 応用例:ダイアログ付きで保存パスを選ぶ

Dim filePath As String
With Application.FileDialog(3) ' msoFileDialogSaveAs
    .InitialFileName = "ユーザー一覧.xlsx"
    If .Show Then filePath = .SelectedItems(1)
End With

If filePath <> "" Then
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "クエリ_ユーザー一覧", filePath, True
End If

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