【入門編】「マイルストーン」の自動追跡:主要イベントの依存関係を監視するダッシュボードVBA – Project VBA解析バイブル

スポンサーリンク

Project VBAを掌握せよ:マイルストーンの「死」を未然に防ぐ、依存関係自動監視ダッシュボードの構築法

こんにちは。現場で泥臭く、かつエレガントにプロジェクトを回し続けてきた皆さんの「頼れる先輩」です。

Project VBAの世界へようこそ。マクロの記録ボタンを押して満足していた時期はもう終わりです。今日は、プロジェクト管理の要である「マイルストーン」を死守するための、本格的な自動追跡ダッシュボードの作り方を伝授します。

「なぜタスクが遅れているのか?」「どのタスクがマイルストーンにトドメを刺そうとしているのか?」――これを一瞬で可視化するのがプロの仕事です。

1. Project VBAの「心臓部」を知る

Project VBAで最も重要なのは、「オブジェクト階層」の理解です。
Projectのデータは、以下のようなピラミッド構造になっています。

  • Application(Project本体)
  • ActiveProject(現在開いているファイル)
  • Tasks(すべてのタスクの集まり)
  • Task(個々のタスク)

この構造を理解せず、いきなりコードを書くのは地図を持たずに山に入るようなもの。まずは「Taskオブジェクト」をどう操作するか、そこから始めましょう。

2. 実践:マイルストーン監視エンジンの設計

今回の目標は、「指定したマイルストーンに対し、依存関係にある先行タスク(Predecessors)が遅延している場合にアラートを出す」というロジックです。

以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。

Sub MonitorMilestoneDependencies()
Dim tsk As Task
Dim pred As Task
Dim milestone As Task
Dim proj As Project
Set proj = ActiveProject

‘ 監視したいマイルストーンのID(例:ID 10)
Set milestone = proj.Tasks(10)

Debug.Print “— マイルストーン監視開始: ” & milestone.Name & ” —”

‘ マイルストーンに直接依存しているタスクを走査
For Each pred In milestone.PredecessorTasks
‘ 終了予定日を過ぎているのに完了していないタスクを検知
If pred.Finish < Date And pred.PercentComplete < 100 Then ' 即座にイミディエイトウィンドウに警告を出す(ここをメール送信等に拡張可能) Debug.Print "警告: タスク '" & pred.Name & "' が遅延中!マイルストーンへの影響大。" ' セルを赤く染めるなどのUIアクション(重要:VBAは視覚的フィードバックが命) pred.Text1 = "遅延警告" pred.TaskColor = pjRed End If Next pred End Sub

このコードの「本質」

  • `PredecessorTasks` プロパティ: これこそがProject VBAの真骨頂。依存関係をわざわざ複雑な計算式で追う必要はありません。APIが提供するこのコレクションを使うだけで、先行タスクの網羅的な取得が可能です。
  • `PercentComplete` と `Finish`: この2つを比較するだけで、プロジェクトの「健康状態」が判定できます。

3. 陥りやすい「3つの罠」

初心者が必ずと言っていいほどハマるポイントがあります。ここを回避できるだけで、あなたは中級者の入り口に立っています。

1. 「マイルストーン」かどうかの判定を忘れる

  • すべてのタスクがマイルストーンとは限りません。`If tsk.Milestone = True Then` という分岐を必ず入れましょう。そうしないと、重要ではないタスクまで監視してノイズだらけになります。

2. 依存関係が「階層構造」になっているケース

  • 今回のコードは「直接の先行タスク」しか見ません。もし孫タスクの遅延まで追いたい場合は、再帰関数(Recursive Function)が必要になります。まずはここをマスターしてから挑戦してください。

3. 計算モードの壁

  • Projectには「自動計算」機能があります。大量のタスクをループ処理する際は、`Application.Calculation = pjManual` に一時的に設定し、処理後に `pjAutomatic` に戻すとパフォーマンスが劇的に向上します。

4. 次のステップ:君がエンジニアとして進化するために

今回のコードは、いわば「初めの一歩」です。ここから先は、以下の機能を実装して自分専用の武器に仕上げてください。

  • 自動通知機能: `Outlook.Application` をVBAから呼び出し、遅延検知時に担当者へ自動メールを送る。
  • ダッシュボード化: 特定のビュー(Report)をVBAで制御し、遅延タスクだけを抽出した「アラートレポート」を自動生成する。

先輩からのメッセージ

コードを書くことは、プロジェクトの「混沌」に「秩序」を与える行為です。
VBAは古い言語と言われることもありますが、プロジェクトの現場でこれほど強力な「自動化の武器」は他にありません。

まずはこのコードを動かしてみてください。エラーが出たら、それは「君が成長するための信号」です。Project VBAの深淵を覗き込み、プロジェクトを支配する側に回りましょう。

また次の講義でお会いしましょう。質問があればいつでもどうぞ。君の健闘を祈っています。

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