PR

Access VBAのTransferSpreadsheetはここまでできる!実務で役立つ応用テクニック7選

VBA

Access VBAでExcel連携を行う際に、多くの方が利用するのがTransferSpreadsheetです。

これまで本サイトでは、

  • Excelファイルのインポート
  • Excelファイルへのエクスポート
  • 任意シートのインポート
  • フォルダ内Excelファイルの一括インポート

などを紹介してきました。 [latest-inf…system.com], [latest-inf…system.com], [latest-inf…system.com]

しかし実際の業務では、

「毎回異なるファイルを取り込みたい」

「出力ファイル名に日付を付けたい」

「複数シートをまとめて処理したい」

など、標準的なサンプルコードだけでは対応できない場面が多くあります。

今回は、Access VBAのTransferSpreadsheetを利用した実務でよく使われる応用テクニックを紹介します。


スポンサーリンク

TransferSpreadsheetとは

TransferSpreadsheetはAccess VBAでExcelとのデータ連携を行うための機能です。

例えば、

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_Import", _

"C:\TEST\Test.xlsx", _

True

でExcelをAccessへ取り込みできます。

逆に、

DoCmd.TransferSpreadsheet _

acExport, _

acSpreadsheetTypeExcel12Xml, _

"Q_Report", _

"C:\TEST\Report.xlsx", _

True

でAccessからExcelへ出力できます。 [latest-inf…system.com], [latest-inf…system.com]


応用例① ファイル選択ダイアログからインポートする

サンプルコードではファイル名を固定しています。

しかし実務では毎回ファイル名が異なることも少なくありません。

そこでファイル選択ダイアログを利用します。

Sub ExcelImport()

Dim FilePath As String

With Application.FileDialog(3)

.Show

FilePath = .SelectedItems(1)

End With

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "T_Import", 
FilePath, True

End Sub

これにより利用者が自由にExcelファイルを選択できます。


応用例② ファイル名へ日付を付けてエクスポートする

レポート出力では非常によく利用します。

Dim FileName As String

FileName =

"C:\Report\売上" & Format(Date, "yyyymmdd") & ".xlsx"

結果

売上_20260902.xlsx

のようなファイル名になります。

月次レポートや日次レポートで特に便利です。


応用例③ クエリ結果のみをExcelへ出力する

初心者の方はテーブルをそのまま出力しがちです。

しかし実務ではクエリを利用します。

DoCmd.TransferSpreadsheet _

acExport, acSpreadsheetTypeExcel12Xml, "Q_売上集計", "C:\TEST\Report.xlsx", True

流れ

T_売上

Q_売上集計

Excel

必要なデータだけ出力できるため非常に便利です。


応用例④ 特定シートだけインポートする

Excelファイル内に複数シートが存在するケースです。

例えば

Sheet1

Sheet2

Sheet3

がある場合、

Sheet2だけ取り込みたいことがあります。

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_Import", _

FilePath, _

True, _

"Sheet2!"

任意シート指定が可能です。 [latest-inf…system.com]


応用例⑤ フォルダ内の全Excelを一括取込する

実務では定型Excelが大量に集まることがあります。

例えば

20260901.xlsx

20260902.xlsx

20260903.xlsx

などです。

この場合、

FileName = Dir("C:\DATA*.xlsx")

Do While FileName <> ""

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_Import", _

"C:\DATA" & FileName, _

True

FileName = Dir()

Loop

とすることで一括取込できます。 [latest-inf…system.com]


応用例⑥ 出力完了後にExcelを自動で開く

利用者に喜ばれる機能です。

Application.FollowHyperlink "C:\TEST\Report.xlsx"

エクスポート後に自動起動できます。

例えば、

レポート出力

Excel起動

すぐ確認

という流れになります。


応用例⑦ 出力前にファイル存在チェックを行う

運用で非常に重要です。

If Dir(FileName) <> "" Then

Kill FileName

End If

既存ファイルを削除してから出力します。

これにより、

同名ファイルが存在するため

保存できません

というエラーを回避できます。


実務で最もよく使う組み合わせ

実際の開発で利用頻度が高いのは次の構成です。

Excel選択

取込テーブル

チェッククエリ

本テーブル

さらに出力時は

本テーブル

集計クエリ

日付付きExcel出力

です。

この構成はほとんどのAccessシステムで利用できます。


TransferSpreadsheetの限界

非常に便利なTransferSpreadsheetですが、苦手なこともあります。

例えば、

セル書式設定

文字色

罫線

背景色


グラフ作成

棒グラフ

円グラフ


特定セルへの出力

A10セルから出力

などです。

このような場合はExcelオブジェクトを利用した処理が必要になります。


Copilotで応用コードを作成する

最近ではCopilotを利用することで応用コードも簡単に作成できます。

例えば、

Access VBAで

フォルダ内の全Excelファイルを

TransferSpreadsheetで

取り込むコードを作成してください。

TransferSpreadsheetを利用して

ファイル名へ日付を付与して

Excel出力するコードを作成してください。

と依頼できます。

特に今回紹介したような応用例との相性は非常に良いです。


過去記事との違い

これまでの記事では、

  • 基本的なExcelインポート
  • Excelエクスポート
  • 任意シート取込
  • フォルダ内Excel取込

など個別機能を紹介してきました。 [latest-inf…system.com], [latest-inf…system.com], [latest-inf…system.com], [latest-inf…system.com]

今回はそれらを横断し、

TransferSpreadsheetを実務でどのように活用するのか

という視点でまとめています。

Access VBAを活用する上で知っておきたい実践テクニック集として参考にしていただければと思います。


まとめ

TransferSpreadsheetは単なるExcelインポート・エクスポート機能ではありません。

工夫次第で、

  • 任意ファイル取込
  • 日付付きレポート出力
  • 複数シート取込
  • フォルダ一括取込
  • 出力後自動起動

など様々な業務自動化を実現できます。

特にAccess VBA初心者の方は、まずTransferSpreadsheetを使いこなせるようになるだけでも大きな業務改善につながります。

さらにCopilotを活用すれば応用コードの作成も容易になるため、ぜひ今回紹介したサンプルを業務へ取り入れてみてください。

Accessマクロ&VBA 開発工房 Office365/2019/2016/2013対応 | 緒方 典子 |本 | 通販 | Amazon
Amazonで緒方 典子のAccessマクロ&VBA 開発工房 Office365/2019/2016/2013対応。アマゾンならポイント還元本が多数。緒方 典子作品ほか、お急ぎ便対象商品は当日お届けも可能。またAccessマクロ&VBA …

コメント

タイトルとURLをコピーしました