Accessで業務システムを構築すると、多くの場合は利用者が手動で処理を実行しています。
しかし実際には、
- 毎朝のCSV取込
- 夜間集計処理
- バックアップ実行
- PDF帳票作成
- メール通知
など、人が操作しなくても実行できる処理が数多く存在します。
結論から言うと、Access VBAとWindowsタスクスケジューラを組み合わせることで、これらの処理を自動実行できるようになります。
当ホームページではAutoExecマクロによる起動時処理や、コマンド実行による自動化について過去に紹介していますが、本記事ではさらに発展させて「決まった時間にAccessを自動実行する方法」に焦点を当てます。
- はじめに
- タスクスケジューラとは
- Access自動化との相性
- AutoExecマクロを活用する
- 逆引き① 自動処理用プロシージャを作りたい
- 逆引き② CSV取込を自動実行したい
- 逆引き③ クエリを実行したい
- 逆引き④ PDF帳票を自動作成したい
- 逆引き⑤ 処理完了メールを送りたい
- 逆引き⑥ 処理完了後にAccessを閉じたい
- 実務でおすすめの処理フロー
- ログ管理を実装する
- エラー処理を必ず実装する
- 実務活用例① 日次売上集計
- 実務活用例② 在庫管理
- 実務活用例③ 月次報告
- Copilot活用術① バッチ処理コード作成
- Copilot活用術② エラー分析
- Copilot活用術③ ログ分析
- 完全自動運用のポイント
- 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システムを利用している企業では、まずは一つの定型業務から自動化を始めることで、大きな業務改善効果を得られるでしょう。


コメント