AccessVBA:【DoCmd】【TransferSpreadsheetメソッド】Excelの取込み(インポート)と出力(エクスポート)
- AccessのデータをExcelに出力したい
- 他の会社とのやり取りでデータをExcelに出力したい
ここでは「TransferSpreadsheet」メソッドを使ったExcelの入力(インポート)と出力(エクスポート)の方法について説明していきます。
◆「TransferSpreadsheet」メソッドについて
まず「TransferSpreadsheet」メソッドの構文は以下のようになります。
1 2 |
'//構文'
DoCmd.TransferSpreadsheet TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA
|
パラメーターの説明
名称 | 説明 |
TransferType | acImport(インポート)やacExport(エクスポート)など |
SpreadsheetType | 「acSpreadsheetTypeExcel12Xml」(Microsoft Excel 2010/2013/2016 XML 形式 (.xlsx、.xlsm、.xlsb))など |
TableName | 「T_一覧情報」など出力したいテーブルorクエリ |
FileName | 「C:\Users\一覧情報.xlsx」など出力先のフォルダのパスとファイル名 |
HasFieldNames | True(1)かFalse(0)。Trueだとインポート時に1行目をフィールド行として扱う。エクスポートの場合は、引数に関係なく、ワークシートの最初の行にフィールド名が挿入される。 |
Range | ワークシートのインポート範囲を指定できる。エクスポートの場合は「シート名」の次に範囲を入力するとエクスポートは失敗する。 |
UseOA | 不要 |
◆Excelインポートのサンプルコード
「TransferType」に「acImport」を使います。
5行目のように「”出力結果!B2:E”」としてセル範囲の設定もできるので、インポートの際に1行目にフィールド名がなくても取り込むことは可能です。
最終列のE列に行数を指定していませんが、この場合は空欄のあるところまでデータとして持ってきます。指定すれば指定した行までインポートされます。空欄がある列の場合は最終行を取得するようにしてください。
1 2 3 4 5 6 7 |
Private Sub DoCmd_Excel取込み_Click()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
"T_一覧取込", _
"C:\Users\VBA\出力フォルダ\DoCmd_出力ためし.xlsx", _
True, "出力結果!B2:E"
MsgBox "完了"
End Sub
|
◆Excelエクスポートのサンプルコード
「TransferType」に「acExport」を使います。
インポートの時と違って、フィールドの有無は無効で、シート名の次にセル範囲を書くとエラーになります。そのため1行目にフィールド名の入ったシートが出力されます。
1 2 3 4 5 6 |
Private Sub DoCmd_Excel出力_Click()
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
"T_一覧情報", "C:\Users\VBA\出力フォルダ\DoCmd_出力ためし.xlsx", _
, "出力結果"
MsgBox "完了"
End Sub
|
出力に際しては、「Range」でシートの位置を設定できません。
Excelのテンプレートに出力したい場合は、以下の記事の方法で可能です。