【入門編】リソースの「登録情報」の整合性をチェックするバリデーションツール – Project VBA解析バイブル

スポンサーリンク

こんにちは。現場の最前線でコードを書き続けているエンジニアです。

「マクロの記録」で生成された汚れたコードに疲れていませんか? プロジェクト管理の現場において、リソース(人や設備)のデータ整合性は、いわばプロジェクトの「血液」です。ここが滞れば、コスト計算も稼働率調整もすべて崩壊します。

今日は、Project VBA(MS Projectの自動化)の世界において、もっとも基本的でありながら、一生モノの武器になる「リソース・バリデーションツール」の極意を伝授します。

—

なぜ「チェックリスト」が必要なのか?

プロジェクトが大規模化すると、誰かが「単価を入れ忘れた」「カレンダーの割り当てを忘れた」という初歩的なミスが必ず発生します。これを手作業で追いかけるのは時間の無駄です。

今回作成するのは、「必須項目が欠けているリソースを瞬時にリストアップし、修正箇所をピンポイントで指摘する」というエンジニアの守護神のようなツールです。

—

1. Project VBAの「地図」を理解する

まず、Project VBAを操る上で避けて通れない「階層構造」をイメージしてください。

  • Project Object: プロジェクト全体そのもの
  • Resources Collection: 全リソースの集合体
  • Resource Object: 個別のリソース(「田中さん」や「開発サーバー」など)

この「Resource」の中にあるプロパティ(単価やカレンダー)を一つずつ覗きに行く……これが自動化の第一歩です。

—

2. 実践:リソースバリデーションコード

それでは、実際に使えるコードを見てみましょう。このコードを標準モジュールに貼り付けて実行してください。

Sub ValidateResourceData()
Dim res As Resource
Dim msg As String
Dim isError As Boolean

‘ 全リソースをループ処理する
‘ ここがProject VBAの心臓部。For Eachで回すのが鉄則です
For Each res In ActiveProject.Resources
isError = False
msg = “”

‘ 1. 名前が空でないかチェック
If res.Name = “” Then
msg = msg & “【名前未設定】”
isError = True
End If

‘ 2. 標準単価が0でないか(コスト管理の基本)
If res.StandardRate = 0 Then
msg = msg & “【単価未設定】”
isError = True
End If

‘ 3. カレンダーが設定されているか
If res.Calendar = “” Then
msg = msg & “【カレンダー未選択】”
isError = True
End If

‘ エラーがある場合のみイミディエイトウィンドウに出力
‘ 現場ではここに「エラーセルに色を塗る」処理を加えてもOKです
If isError Then
Debug.Print “ID:” & res.ID & ” 名前:” & res.Name & ” -> ” & msg
End If
Next res

MsgBox “チェック完了!エラー詳細はイミディエイトウィンドウ(Ctrl+G)を確認してください。”
End Sub

コードのここがポイント!

  • For Each res In ActiveProject.Resources: これが「全リソースを舐める」という魔法の呪文です。インデックス番号を指定するより圧倒的にバグが少なく、読みやすい。
  • Debug.Print: 画面にいちいちポップアップを出すと作業が止まります。開発者は「イミディエイトウィンドウ」を使いこなしましょう。

—

3. 初心者が陥りやすい「3つの落とし穴」

コードが動いたからといって油断してはいけません。現場で生き残るために、以下の3点だけは覚えておいてください。

① 「Nothing」の罠

リソースが存在しない場合や、途中で削除された場合にコードが停止することがあります。`If Not res Is Nothing Then` といったNULLチェックを癖にしましょう。

② 計算負荷を意識する

リソースが数千人規模になると、ループを回すだけで数秒かかることがあります。`Application.ScreenUpdating = False` をコードの最初に入れるだけで、劇的に速度が向上します。

③ ユーザーへの優しさ

エラーを指摘するだけでなく、「具体的にどこを直せばいいか」をメッセージに含めること。これができるエンジニアは、チームからの信頼が段違いです。

—

まとめ:ここをクリアすれば、あなたはもう「脱・初心者」

リソースの整合性をプログラムで担保する。これは、単なる「作業効率化」ではありません。「プロジェクトの品質を技術で守る」というプロフェッショナルの姿勢そのものです。

まずは、このコードを自分の環境で動かし、「何が起きているのか」をステップ実行(F8キー)で追ってみてください。その一歩が、あなたの自動化スキルを一段上のステージへ引き上げます。

もし詰まったら、いつでも戻ってきてください。私たちはコードを通じて、現場をより良くしていく仲間ですから。応援しています!

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