PR

Access VBA逆引き集|Windowsタスクスケジューラと連携して完全自動運用を実現する実践テクニックとCopilot活用術

VBA

Accessで業務システムを構築すると、多くの場合は利用者が手動で処理を実行しています。

しかし実際には、

  • 毎朝のCSV取込
  • 夜間集計処理
  • バックアップ実行
  • PDF帳票作成
  • メール通知

など、人が操作しなくても実行できる処理が数多く存在します。

結論から言うと、Access VBAとWindowsタスクスケジューラを組み合わせることで、これらの処理を自動実行できるようになります。

当ホームページではAutoExecマクロによる起動時処理や、コマンド実行による自動化について過去に紹介していますが、本記事ではさらに発展させて「決まった時間にAccessを自動実行する方法」に焦点を当てます。


スポンサーリンク

はじめに

多くのAccessシステムは次の流れで運用されています。

利用者出社

↓

Access起動

↓

CSV取込

↓

集計処理

↓

レポート作成

しかし実際には、

早朝自動取込

↓

自動集計

↓

PDF作成

↓

メール送信

↓

利用者確認のみ

という仕組みにすることも可能です。

そのために活用するのがWindowsタスクスケジューラです。


タスクスケジューラとは

Windowsに標準搭載されている機能です。

例えば、

  • 毎日6時
  • 毎週月曜日
  • 月末最終日

など指定したタイミングでプログラムを実行できます。

追加費用も不要です。


Access自動化との相性

Accessでは次のような処理が自動化できます。

CSV取込

早朝のデータ連携

売上集計

前日実績集計

レポート出力

PDF帳票生成

メール送信

担当者通知

バックアップ

データ保全

特に定型業務との相性が抜群です。


AutoExecマクロを活用する

まず自動起動時の入口を作ります。

AutoExecマクロはAccess起動時に自動実行される仕組みです。

例えば、

Function AutoExec()

Call MainProcess

End Function

としておけば、

Access起動

↓

AutoExec

↓

MainProcess

が実行されます。


逆引き① 自動処理用プロシージャを作りたい

標準モジュールに作成します。

Public Sub MainProcess()

MsgBox "処理開始"

End Sub

まずはここから始めます。


逆引き② CSV取込を自動実行したい

AutoExecから呼び出します。

Public Sub MainProcess()

DoCmd.TransferText _

acImportDelim, _

"", _

"T_IMPORT", _

"C:\Import\Data.csv"

End Sub

起動と同時に実行できます。


逆引き③ クエリを実行したい

定期集計で活躍します。

CurrentDb.Execute _

"UPDATE T_DATA " & _

"SET FLG = True"

夜間バッチ処理に利用できます。


逆引き④ PDF帳票を自動作成したい

DoCmd.OutputTo _

acOutputReport, _

"R_売上報告", _

acFormatPDF, _

"C:\PDF\売上.pdf"

毎朝の帳票作成に有効です。


逆引き⑤ 処理完了メールを送りたい

集計完了通知として利用します。

Call SendMail

処理終了後に担当者へ通知できます。


逆引き⑥ 処理完了後にAccessを閉じたい

無人運用で重要です。

Application.Quit

最後に実行します。


実務でおすすめの処理フロー

例えば売上管理システムの場合です。

06:00 Access起動

↓

CSV取込

↓

更新クエリ

↓

売上集計

↓

PDF出力

↓

完了メール送信

↓

Access終了

担当者が出社する頃には準備完了です。


ログ管理を実装する

無人運転では必須です。

T_BATCH_LOG

項目
実行日時
処理名
結果
エラー内容

保存例

CurrentDb.Execute _

"INSERT INTO T_BATCH_LOG " & _

"(実行日時,処理名) " & _

"VALUES(Now(),'夜間処理')"

エラー処理を必ず実装する

自動実行では特に重要です。

On Error GoTo ErrHandler

Call MainProcess

Exit Sub

ErrHandler:

CurrentDb.Execute _

"INSERT INTO T_ERROR_LOG " & _

"(発生日時,内容) " & _

"VALUES(Now(),'" & _

Err.Description & "')"

最近のAccess運用ではエラー処理とログ記録が非常に重要視されています。


実務活用例① 日次売上集計

毎日早朝に実行します。

CSV受信

↓

Access起動

↓

集計

↓

出力

管理者の作業を削減できます。


実務活用例② 在庫管理

深夜に在庫再計算を実施します。

データ更新

↓

在庫計算

↓

結果保存

営業時間への影響を避けられます。


実務活用例③ 月次報告

月末バッチとして活躍します。

締処理

↓

PDF作成

↓

共有フォルダ保存

定型業務を効率化できます。


Copilot活用術① バッチ処理コード作成

Copilotへ次のように依頼します。

Access VBAで夜間バッチ処理を作成してください。

条件

・CSV取込

・PDF出力

・エラーログ記録

・処理後終了

かなり実用的なコードの雛形を生成できます。


Copilot活用術② エラー分析

例えば次の内容を貼り付けます。

実行時エラー3027

すると、

  • 発生原因
  • 確認方法
  • 修正案

を整理できます。


Copilot活用術③ ログ分析

ログデータを提示して、

処理時間が長い原因を分析してください

と依頼できます。

最近のCopilot活用では、コード作成だけでなく分析支援も有効です。


完全自動運用のポイント

ログ記録

障害発見を容易にする

エラー通知

メール送信する

処理時間計測

性能悪化を監視する

共通設定化

保存先を設定テーブル化する

定期メンテナンス

ログ肥大化を防ぐ


Accessとタスクスケジューラの組み合わせが強力な理由

最近はクラウドサービスも増えていますが、

  • 社内ネットワーク完結
  • 追加費用不要
  • VBA資産を流用可能

という利点があります。

さらにCopilotを活用すると、

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

を効率化できます。Access開発においてCopilotは有力な支援ツールになっています。


まとめ

Access VBAとWindowsタスクスケジューラを組み合わせることで、多くの定型業務を無人化できます。

特に、

  • CSV取込
  • Excel連携
  • 集計処理
  • PDF生成
  • メール通知

といった処理では高い効果を発揮します。

また、AutoExecマクロを活用することで起動時に自動処理を実行できます。

さらにCopilotを活用すれば、

  • バッチ処理作成
  • エラー解析
  • ログ分析
  • 改善提案

も効率化できます。

Accessシステムを利用している企業では、まずは一つの定型業務から自動化を始めることで、大きな業務改善効果を得られるでしょう。

コメント

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