DoCmd.TransferSpreadsheetの使い方
DoCmd.TransferSpreadsheet
は、Access VBAで Access と Excel 間のデータをインポート/エクスポートするための便利なメソッドです。
目次
✅ 概要
DoCmd.TransferSpreadsheet
は、Access の テーブル / クエリ と Excel ファイルの間でデータを読み書き(インポート・エクスポート)するために使用します。
✅ 基本構文
DoCmd.TransferSpreadsheet _ TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range
✅ パラメータ一覧
パラメータ名 | 必須 | 説明 |
---|---|---|
TransferType | ○ | 転送の種類(acExport , acImport , acLink ) |
SpreadsheetType | ○ | Excelのバージョン形式(例: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 の選択肢
値 | 内容 |
---|---|
acImport | Excel → Access(インポート) |
acExport | Access → Excel(エクスポート) |
acLink | Excelファイルをリンクテーブルとして接続 |
✅ SpreadsheetType(バージョン)一覧
値 | 内容 |
---|---|
acSpreadsheetTypeExcel12 | Excel 2007(.xls) |
acSpreadsheetTypeExcel12Xml | Excel 2007以降(.xlsx) |
acSpreadsheetTypeExcel9 | Excel 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