PR

Access VBA逆引き集|ZIPファイルを自動解凍してデータ取込を効率化する実践テクニックとCopilot活用術

VBA

業務で受け取るデータは、CSVやExcelのままではなくZIP形式で圧縮されていることが少なくありません。

例えば、

  • 本社から送られてくる売上データ
  • 取引先から受領するマスタデータ
  • Webシステムからダウンロードした集計データ
  • バックアップファイル

などです。

結論から言うと、Access VBAでZIPファイルの解凍からCSV取込までを自動化することで、日常業務の手間を大幅に削減できます。また、Microsoft Copilotを活用することで、ZIP操作のVBA作成やエラー解析も効率化できます。


スポンサーリンク

ZIPファイル対応が必要な理由

データ連携の現場ではZIP形式が広く利用されています。

その理由は次の通りです。

  • ファイルサイズ削減
  • メール送信容量対策
  • 複数ファイルの一括配布
  • バックアップ保管

しかし利用者側では、

ZIP解凍

保存

Access起動

取込実行

という手作業が発生します。

この部分を自動化することで業務効率は大きく向上します。


AccessでZIPファイルを扱う考え方

Access単体にはZIP解凍機能はありません。

そのため、

  • Windows標準機能
  • PowerShell
  • Shell.Application

などを利用します。

Access VBAから外部機能を呼び出して解凍を実現します。


逆引き① ZIPファイルの存在確認をしたい

まずは対象ファイルを確認します。

If Dir("C:\Import\Data.zip") <> "" Then

MsgBox "ZIPファイルがあります"

End If

自動化の基本です。


逆引き② ZIPファイルを解凍したい

Windows標準機能を利用する例です。

Dim objShell As Object

Set objShell = CreateObject("Shell.Application")

objShell.Namespace("C:\Work").CopyHere _

objShell.Namespace("C:\Import\Data.zip").Items

Set objShell = Nothing

解凍先フォルダへ展開できます。


逆引き③ PowerShellで解凍したい

近年はこちらの方法も増えています。

Shell _

"powershell Expand-Archive " & _

"-Path C:\Import\Data.zip " & _

"-DestinationPath C:\Work", _

vbHide

シンプルに実装できます。


逆引き④ 解凍後のCSVを取り込みたい

解凍後は通常のCSV取込です。

DoCmd.TransferText _

acImportDelim, _

"", _

"T_SALES", _

"C:\Work\Sales.csv", _

True

定型処理として組み込めます。


逆引き⑤ ZIPファイル名を取得したい

フォルダ内のZIPを取得します。

Dim strFile As String

strFile = Dir("C:\Import*.zip")

Do While strFile <> ""

Debug.Print strFile

strFile = Dir()

Loop

複数ファイルの自動処理が可能になります。


逆引き⑥ 取込後にZIPを移動したい

処理済み管理は重要です。

Name _

"C:\Import\Data.zip" As _

"C:\Complete\Data.zip"

再取込防止になります。


実務でよくある構成

例えば売上データ取込の場合です。

売上ZIP受信

監視フォルダ保存

自動解凍

CSV読込

テーブル登録

ログ保存

処理済移動

担当者の作業をほぼゼロにできます。


ZIP内のファイル数を確認したい

取込前チェックに利用します。

Set objZip = _

objShell.Namespace(strZip)

Debug.Print objZip.Items.Count

欠落データ防止に役立ちます。


解凍先フォルダを事前作成する

存在確認が必要です。

If Dir("C:\Work", _

vbDirectory) = "" Then

MkDir "C:\Work"

End If

運用時のエラーを防止できます。


実務活用例① 売上データ自動取込

毎朝送られてくるZIPファイルを処理します。

ZIP受信

解凍

CSV取込

売上更新

非常に多い利用例です。


実務活用例② 顧客マスタ更新

本社から配布されたデータを反映します。

顧客マスタZIP

解凍

更新クエリ

反映

保守運用の負荷を削減できます。


実務活用例③ バックアップ復元

万一のときに活用できます。

ZIP保存

解凍

Accessへ復元

災害対策や運用保守で役立ちます。


ログ管理を実装する

運用開始後は履歴管理が必須です。

T_ZIP_LOG

項目
処理日時
ZIP名
解凍結果
取込件数
利用者

ログを保存します。

CurrentDb.Execute _

"INSERT INTO T_ZIP_LOG " & _

"(処理日時,ZIP名) " & _

"VALUES(Now(),'DATA.ZIP')"

障害調査が容易になります。


エラー処理を実装する

ファイル操作ではエラー対策が重要です。

On Error GoTo ErrHandler

'処理

Exit Sub

ErrHandler:

MsgBox _

Err.Number & vbCrLf & _

Err.Description

Access運用では標準実装にすることをおすすめします。


Copilot活用術① ZIP自動化コード生成

Copilotには具体的に依頼します。

Access VBAでZIPファイルを解凍し、

CSVを自動取込するコードを作成してください。

条件

・エラー処理あり

・ログ出力あり

・処理済フォルダへ移動

かなり実践的なコードを生成できます。


Copilot活用術② エラー解析

例えば次のようなエラーです。

実行時エラー 76

パスが見つかりません

Copilotへ入力すると、

  • 発生原因
  • 確認ポイント
  • 修正案

を短時間で整理できます。


Copilot活用術③ 保守改善

既存コードを提示して、

保守性改善案を教えてください

と依頼すると、

  • 関数化
  • 共通化
  • 命名規則改善
  • ログ強化

などの提案が期待できます。


ZIP処理導入時の注意点

大容量ファイル

解凍時間が長くなる場合があります。

上書き確認

同名ファイルの扱いを決める必要があります。

権限設定

共有フォルダアクセス権を確認します。

ウイルス対策

受領ファイルの事前チェックが重要です。

ログ肥大化

定期的なメンテナンスを実施します。


AccessとCopilotの組み合わせが有効な理由

近年は生成AIの普及によりAccess開発の進め方も変化しています。

Copilotを活用することで、

  • VBAコード生成
  • SQL作成支援
  • エラー解析
  • ドキュメント作成

を効率化できます。Access開発者の支援ツールとして活用が広がっています。

特にZIP処理のような少し特殊なコードは、Copilotとの相性が非常に良い領域です。


まとめ

ZIPファイル対応は地味に見えますが、実務現場では非常に効果の高い自動化テーマです。

特に、

  • 売上データ取込
  • 顧客マスタ更新
  • バックアップ運用
  • 他システム連携

などで大きな効果を発揮します。

また、Copilotを活用することで、

  • コード作成
  • エラー解析
  • 保守改善
  • ドキュメント作成

を効率化できるため、短期間で品質の高いAccessシステムを構築できます。

今後も外部システムとのデータ連携は増加すると考えられます。ZIP自動処理はその第一歩として非常に有効な機能ですので、ぜひ導入を検討してみてください。

コメント

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