PR

Access VBA逆引き集|「複数のExcelファイルを自動統合する」実践テクニック

VBA

業務で複数のExcelファイルを集約する作業が発生するなら、Access VBAで自動化するのがおすすめです。

月次報告や各拠点から集まるデータでは、「複数のExcelを1つにまとめる」という作業が頻繁に発生します。しかし手作業では時間がかかり、転記ミスも起こりがちです。

今回はVBA逆引きシリーズとして、「複数Excelファイルの自動統合」をテーマに、実務で使えるテクニックを紹介します。


スポンサーリンク

Excel統合作業でよくある課題

例えば次のようなケースです。

  • 全国拠点から売上データが届く
  • 各担当者が作成したExcelを集約する
  • 月末に複数部門の実績をまとめる
  • 点検データを一括管理する

担当者が毎回コピー&ペーストしていると、

  • 集計漏れ
  • 二重登録
  • 工数増加

が発生します。

Access VBAを使えば、フォルダ指定だけで統合作業を自動化できます。


VBA逆引き① Excelファイルを取り込む

まずは1つのExcelファイルを取り込む方法です。

サンプルコード

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_売上", _

"C:\Data\売上.xlsx", _

True

ポイント

TransferSpreadsheetを利用すると、

  • xlsx
  • xls
  • xlsm

などのファイルを簡単に取り込めます。


VBA逆引き② 指定シートのみ取り込む

対象シートを限定する場合です。

サンプルコード

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_売上", _

"C:\Data\売上.xlsx", _

True, _

"売上一覧$"

利用例

  • 集計用シートのみ
  • マスタシートのみ
  • テンプレート運用

不要なデータを除外できます。


VBA逆引き③ フォルダ内のExcelを一括取込

実務では最も利用頻度が高い方法です。

サンプルコード

Dim strPath As String

Dim strFile As String

strPath = "C:\Data"

strFile = Dir(strPath & "*.xlsx")

Do While strFile <> ""

DoCmd.TransferSpreadsheet _

acImport, _

acSpreadsheetTypeExcel12Xml, _

"T_売上", _

strPath & strFile, _

True

strFile = Dir()

Loop

メリット

担当者はフォルダへExcelを保存するだけです。

集計担当者の作業はほぼ不要になります。


VBA逆引き④ 取込元ファイル名を記録する

後からデータの出所を確認したい場合があります。

取込テーブルに

取込ファイル名

列を準備します。

サンプルコード

CurrentDb.Execute _

"UPDATE T_売上 " & _

"SET 取込ファイル名 = '" & strFile & "' " & _

"WHERE 取込ファイル名 Is Null"

活用例

  • データ監査
  • 原本確認
  • トレーサビリティ

VBA逆引き⑤ 重複データを除外する

同じファイルを誤って登録するケースがあります。

主キーで管理

社員番号

日付

を複合キーに設定します。

VBA例

CurrentDb.Execute _

"DELETE FROM T_売上 " & _

"WHERE 社員番号 Is Null"

ポイント

テーブル設計で重複防止を考慮すると運用が安定します。


VBA逆引き⑥ ファイル名から年月を取得する

実務で非常に便利なテクニックです。

例えば

売上_202607.xlsx

というファイル名の場合、

年月を自動登録できます。

サンプルコード

Dim strYm As String

strYm = Mid(strFile, 4, 6)

取得結果

202607

これを管理項目として保存できます。


VBA逆引き⑦ Excelアプリを開かず高速取込

よくある誤解として、

「Excel VBAで開いてから読まなければならない」

と思われています。

しかしAccessでは

TransferSpreadsheet

だけで直接読み込めます。

効果

  • 高速処理
  • メモリ節約
  • 安定運用

大量データでは特に有効です。


VBA逆引き⑧ 取込エラーをログに残す

運用開始後に重要になります。

ログテーブル例

項目内容
取込日時日時
ファイル名文字列
結果成功・失敗
エラー内容文字列

サンプルコード

CurrentDb.Execute _

"INSERT INTO T_取込ログ " & _

"(取込日時,ファイル名,結果) " & _

"VALUES(#" & Now() & "#,'" & _

strFile & "','成功')"

効果

障害発生時の調査が容易になります。


VBA逆引き⑨ 処理済みファイルを移動する

再取込防止に有効です。

サンプルコード

Name _

"C:\Data" & strFile _

As _

"C:\Data\Done" & strFile

運用例

Data

├─ Incoming

├─ Done

└─ Error

実務システムでは定番構成です。


VBA逆引き⑩ すべて自動化する統合処理

実際の運用では以下の流れになります。

STEP1

フォルダ監視

STEP2

Excel取込

STEP3

重複チェック

STEP4

ログ登録

STEP5

処理済みフォルダへ移動

STEP6

結果通知

これだけで月次集計業務が大幅に効率化できます。


実務でおすすめのテーブル構成

T_売上

項目
社員番号
売上日
金額
取込年月
取込ファイル名

T_取込ログ

項目
処理日時
ファイル名
結果
件数
エラー内容

これだけで中小規模の業務システムなら十分運用可能です。


AccessがExcel集約に強い理由

Excelだけで集計すると、

  • ファイル数増加
  • 処理速度低下
  • 同時編集問題

が発生します。

一方Accessでは、

  • データベース管理
  • 高速検索
  • クエリ集計
  • レポート出力

が利用できます。

Excelをデータ入力ツール、Accessを集計基盤として使い分けると非常に効率的です。


まとめ

今回はVBA逆引きとして「複数のExcelファイルを自動統合する方法」を紹介しました。

ポイントは以下のとおりです。

  • TransferSpreadsheetでExcelを簡単に取込可能
  • フォルダ内ファイルの一括処理ができる
  • ファイル名管理で追跡性を確保できる
  • ログ管理とエラー処理が重要
  • 月次集計や拠点集約業務に最適

Excelを扱う現場は非常に多く、Accessによる自動統合は今でも高い業務改善効果があります。特に「毎月同じ集計作業をしている」という方は、一度仕組み化を検討してみてはいかがでしょうか。

コメント

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