0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第5回:一括実行ボタンで全処理を回す設計とVBA+PADの制御【統合フロー編】

Posted at

こんにちは、藤田です。
ここまでのシリーズでは「PADでデータ取得」「CSV整形」「Outlookでメール送信」という3つの工程を個別に紹介してきました。今回はそれらの工程を1つのボタンで一括制御する実装方法と設計思想についてまとめます。


🔄実現したい全体構成

Excel上の「一括実行」ボタンをクリック
  ↓
VBA:PADを起動し、AccessまたはSQLからデータ取得
  ↓
PAD:CSVファイル生成
  ↓
VBA:CSV読み込み・成形・保存
  ↓
VBA:Outlookでメール送信
  ↓
VBA:ログ保存/完了メッセージ

この流れがボタンひとつで完結するように設計しました。
処理は順番どおり、途中で異常があれば止まるようにしてあります。


🧩VBAボタンの裏側ロジック

まずはExcelのボタンに紐づけるVBA側のメインプロシージャ。

📄コード例:メイン一括処理プロシージャ

Sub RunAllAutomation()
    On Error GoTo ErrHandler
    LogMessage "一括実行開始"

    ' 実行フラグ指定してPAD呼び出し
    Shell "cmd.exe /c C:\PAD\run_pad.bat ALL", vbNormalFocus
    LogMessage "PADでデータ取得完了"

    ' CSV整形処理(クレンジング&成形)
    CleanseCSV
    LogMessage "CSV整形完了"

    ' Outlookでメール送信
    SendReportViaOutlook
    LogMessage "メール送信完了"

    MsgBox "処理が完了しました!", vbInformation
    Exit Sub

ErrHandler:
    LogMessage "エラー発生: " & Err.Description
    MsgBox "エラーが発生しました。" & vbCrLf & Err.Description, vbCritical
End Sub

🔍補足ポイント:

  • LogMessage を使って処理進捗をログに記録(ファイル or シート)
  • Shell で呼ぶ .bat ファイルは、第1回で紹介したCLI経由でPAD起動
  • 各工程は別モジュールで分割してあり、汎用性アップ
  • On Error により例外発生時の処理も明確化

🧠PAD側の「ALL」シナリオ処理

この「ALL」実行モードでは、PADフロー側でも複数処理サブルーチンを順番に呼び出す構成になっています。

🧵実行順:

  1. データ取得(Access or SQL)
  2. CSV出力
  3. 一時ログ出力(任意)
  4. 終了通知ファイル作成(VBAが処理開始するための合図)

この「終了通知ファイル」は、C:\Shared\pad_ready.txt のようなフラグファイルとして使い、VBA側はその存在を確認して次工程に進みます。


🖥️Excel上のUI構成(シンプルでわかりやすく)

VBAマクロだけでなく、Excel画面に実行ボタンが並んでいたほうがユーザーには親切ですよね。ということで、以下のようなUI構成にしてみました。

ボタン名 処理内容
データ取得(Access) 個別PAD起動(Access)
データ取得(SQL) 個別PAD起動(SQL)
整形処理のみ VBA処理(CSV読み込み・成形)
メール送信 VBAからOutlook送信
🔁 一括実行 すべてを順番に実行!

💡UI設計Tips:

  • 一括実行は「赤枠+太字+大きめボタン」で強調
  • それぞれのボタン下に「最終実行日時」を表示(ログ読み出しで更新)
  • 実行後に「完了メッセージ」+セルにステータス更新("済"など)

🧬フローの可変性とモジュール化

業務が変わると「AccessじゃなくてSQLだけにしたい」「メール送信は不要」などの要望が出ることがあります。そのとき、フローをモジュール分割しておくと柔軟に対応できます。

🌱実装方針:

Sub RunAllAutomation()
    If UseSQL Then Call RunSQLPAD
    If UseAccess Then Call RunAccessPAD
    If DoCleanse Then Call CleanseCSV
    If SendMail Then Call SendReportViaOutlook
End Sub

これなら、チェックボックスや設定ファイルでフロー分岐も可能です。


🔐セキュリティと配布時の注意

項目 内容
Outlook送信 セキュリティ警告が出る可能性あり(会社環境では注意)
マクロ配布 「マクロ有効ファイル(.xlsm)」で配布し、信頼済みに登録
ファイルパス 相対パス or 設定シートで管理(他環境でも動くように)
ログ保存先 ネットワークフォルダで共有する場合は権限・同時書き込みに注意

🚀今後の展開:一括構成の応用

この「一括ボタン構成」があるだけで、実務フローが圧倒的に楽になります。さらに発展させると:

  • PowerAppsと連携して「スマホ入力 → 一括処理」も可能に
  • 処理ステータスをTeamsへ通知
  • 処理内容をDataverseに保存 → Copilot分析

私自身も今後、帳票処理だけでなく「伝票自動整理」「売上分析前処理」などで活用する予定です。


🧠まとめと最終回予告

今回のポイント:

  • VBAからPADを呼び出し → データ取得 → 成形 → 送信まで、一括実行構成を確立
  • UI設計や可変処理設計により、運用性と汎用性が向上
  • モジュール分割とログ出力によって保守性も良好に

最終回(第6回・蛇足編)では、開発中に出てきた小ネタ・やらかし・Tipsなどをまとめます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?