【入門編】Project VBAでリソースの「稼働率」を監視し、予実乖離を早期発見するダッシュボード – Project VBA解析バイブル

スポンサーリンク

プロジェクトの「見えない危機」を可視化する。Project VBAで構築する予実管理ダッシュボードの極意

プロジェクトマネージャーの皆さん、こんにちは。現場で「なぜか予定通りに進まない」「リソースの限界が見えない」という焦燥感に駆られたことはありませんか?

多くの人が「マクロの記録」で自動化を始めますが、Project VBAの世界は、単なるボタン操作の延長ではありません。これは「プロジェクトという名の生きたシステムを、コードで制御する」という高度なエンジニアリングです。

今日は、リソースの「予実乖離」を早期に発見し、プロジェクトの炎上を未然に防ぐためのダッシュボード構築術を伝授します。

—

1. なぜ「リソース稼働率」を監視するのか?

プロジェクト管理において、最も恐ろしいのは「遅延」そのものではなく、「遅延していることに気づかないこと」です。

  • 予定工数(Baseline Work):計画時に決めた理想の消費時間。
  • 実績工数(Actual Work):現時点で実際に消費した時間。

この差分(乖離)を毎日、あるいは毎週自動で計算し、閾値を超えたリソースをハイライトする。これだけで、PMの判断スピードは劇的に向上します。

—

2. Project VBAの心臓部:オブジェクトモデルを理解する

Project VBAを操る上で、まずは以下の「階層」を頭に叩き込んでください。

1. Projectオブジェクト:開いているプロジェクトそのもの。
2. Resourcesコレクション:プロジェクト内の全リソースの集まり。
3. Resourceオブジェクト:個々の人間や機材。ここに「Work(工数)」や「ActualWork(実績)」が宿っています。

ここで陥りやすい罠:データの型と単位

Project VBAの工数は「分」単位で保持されています。例えば、8時間稼働は「480分」として扱われます。この単位を意識しないと、計算結果が10倍、60倍になってしまうので注意が必要です。

—

3. 実践コード:予実乖離を算出し、ログを出力する

このマクロは、すべてのリソースを巡回し、予定と実績の乖離率をチェックします。乖離が20%を超えたリソースを「危険信号」としてイミディエイトウィンドウに出力します。

Sub MonitorResourceVariance()
Dim res As Resource
Dim variance As Double
Dim baselineWork As Double
Dim actualWork As Double

‘ プロジェクト内の全リソースをループ
For Each res In ActiveProject.Resources
‘ リソースが「人」であるか確認(材料リソース等を除外)
If res.Type = pjResourceTypeWork Then

baselineWork = res.BaselineWork / 60 ‘ 分を時間に変換
actualWork = res.ActualWork / 60

‘ 予定がゼロでない場合に乖離率を計算
If baselineWork > 0 Then
variance = (actualWork – baselineWork) / baselineWork

‘ 乖離率が20%(0.2)を超えていたら警告
If variance > 0.2 Then
Debug.Print “【警告】” & res.Name & ” の乖離率: ” & Format(variance, “0%”)
‘ ここでセルに色を塗ったり、メールを送る処理を追加可能
End If
End If
End If
Next res

MsgBox “リソースの稼働チェックが完了しました。”, vbInformation
End Sub

コードのポイント

  • `pjResourceTypeWork`:人や機械など、工数を消費するリソースだけをフィルタリングしています。ここを忘れると、経費などのリソースで計算が狂います。
  • `Debug.Print`:開発時はイミディエイトウィンドウ(Ctrl + G)で結果を確認するのが鉄則です。慣れてきたら、Excelシートや別のフォームに結果を書き出すように拡張しましょう。

—

4. 運用で失敗しないための「極限の知見」

現場で長く使われるツールを作るためには、以下の3点を意識してください。

① データの更新タイミングを自動化する

手動でマクロを実行するのは忘れます。`Project_Open` イベントや、定期的なタイマー実行を組み合わせることで、出社した瞬間に最新のレポートが上がってくる仕組みを作りましょう。

② 異常値の定義をプロジェクトごとに変える

「20%の乖離」はあくまで目安です。クリティカルパス上のリソースなら5%でも異常ですし、バックオフィス業務なら30%まで許容できるかもしれません。閾値を定数としてコードの冒頭に置くか、設定用シートから読み込む設計にしてください。

③ 「人間」を責めるためのツールにしない

ここが一番大切です。このダッシュボードは「リソースを責める」ためではなく、「ボトルネックを早期に解消して、リソースを保護する」ために使ってください。PMが先回りしてタスクを調整してあげることで、チームの信頼は揺るぎないものになります。

—

最後に:ここをクリアすれば、あなたはもう「脱・初心者」

Project VBAの習得は、まずは「オブジェクトを触って、プロパティを書き換える」ことから始まります。今回紹介した工数の比較ができれば、あなたはすでにプロジェクトの全容を数値化できる力を持っています。

次は、これをExcelに出力してグラフ化するのか、それともSlackに通知を飛ばすのか。あなたのプロジェクトに必要な「次のアクション」を考えてみてください。

「システムが人を使う」のではなく、「人がシステムを使いこなしてプロジェクトを導く」。そんなアーキテクトとしての第一歩を、ぜひこのコードから始めてください。応援しています!

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