【入門編】【中級者向け】ベースライン設定時に「設定済みフラグ」をカスタムフィールドに書き込む運用管理 – Project VBA解析バイブル

スポンサーリンク

【Project VBA極意】ベースライン設定を「可視化」せよ。カスタムフィールドでプロジェクト管理を自動化する

こんにちは。プロジェクト管理の現場で「なぜかベースラインが引かれていないプロジェクトが放置されている…」と頭を抱えたことはありませんか?

MS Projectの標準機能は強力ですが、大規模なプロジェクトが並ぶと「誰が設定済みで、誰が未設定か」を瞬時に把握するのは至難の業です。

今日は、マクロの記録を卒業した皆さんに、「ベースライン設定と同時にカスタムフィールドへフラグを書き込み、管理状態を可視化する」という、現場で即戦力となるテクニックを伝授します。

なぜ「フラグ管理」が必要なのか?

MS Projectにはベースラインの有無を判定する関数もありますが、VBAからこれを利用してレポートを作成したり、一覧表でフィルタリングしたりするのは少々手間がかかります。

そこで、「Text1」や「Flag1」といったカスタムフィールドを「管理フラグ」として再定義するのです。ベースライン保存の瞬間に、このフィールドを書き換える。これだけで、プロジェクトマネージャーは「未設定」を即座にフィルタリングできるようになります。

実装の極意:コードの全貌

まずは、ベースラインを保存し、その直後にカスタムフィールドへ「設定済み」という証を刻むコードをご覧ください。

Sub SetBaselineAndFlag()
‘ プロジェクトオブジェクトを変数に格納(パフォーマンスの基本)
Dim proj As Project
Set proj = ActiveProject

‘ 1. ベースラインの設定(全タスク対象)
‘ SaveBaseline パラメータ: BaselineNumber:=pjBaseline0 は「ベースライン」を指します
On Error Resume Next ‘ 万が一の保存失敗をハンドリング
proj.SaveBaseline BaselineNumber:=pjBaseline0, AllTasks:=True

If Err.Number <> 0 Then
MsgBox “ベースラインの保存に失敗しました。”, vbCritical
Exit Sub
End If
On Error GoTo 0

‘ 2. カスタムフィールドへのフラグ書き込み
‘ Text1を「ベースライン更新日」として利用する運用例
Dim task As Task
For Each task In proj.Tasks
If Not task Is Nothing Then
‘ プロジェクト要約タスク(ID=0)に設定日時を記録
If task.ID = 0 Then
task.Text1 = “設定済: ” & Format(Now(), “yyyy/mm/dd HH:nn”)
End If
End If
Next task

MsgBox “ベースライン設定完了!管理フラグを更新しました。”, vbInformation
End Sub

ここがポイント!初学者がハマる罠

1. 「ActiveProject」を過信しない

マクロを動かす際、つい `ActiveProject` を連発しがちですが、これには注意が必要です。大規模開発では複数のプロジェクトファイルを開くこともあります。ループ処理や複雑な計算を行うときは、必ず上記コードのように一度変数にセットしてから処理を行うのが「プロの作法」です。これだけでメモリの負荷が減り、動作が安定します。

2. 「Nothing」のチェックは必須

`For Each task In proj.Tasks` でループを回す際、Projectの中には「存在しない(空の)タスク」が含まれている場合があります。`If Not task Is Nothing Then` を入れ忘れると、予期せぬエラーでマクロが強制終了します。この一行が、あなたのコードを堅牢(ロバスト)にします。

3. ID = 0 の重要性

MS Projectにおいて、ID 0は「プロジェクト全体」を指す特別なタスクです。個別のタスクにフラグを立てるのではなく、プロジェクトサマリー(ID:0)にフラグを集約するのが、後で集計する際に最も効率的な設計です。

ステップアップ:この仕組みをどう活用するか?

このフラグが埋め込まれたら、次は以下の活用に挑戦してみてください。

  • カスタムフィルタの作成:

カスタムフィールド「Text1」が空のプロジェクトをフィルタリングするビューを作成しておけば、プロジェクト一覧画面で「未設定案件」だけが赤字で浮き上がるようになります。

  • 権限の自動チェック:

ベースラインを勝手に変更させないよう、このフラグが立っている場合は編集をブロックするような「ガード付きマクロ」に発展させることも可能です。

最後に:VBAは「自動化」ではなく「信頼の構築」

VBAを書くということは、単に作業を楽にするだけではありません。「誰がやっても同じ品質でプロジェクト管理ができる仕組みを作る」ということです。

「ベースラインを引く」という地味な作業にフラグ管理という付加価値をつける。この小さなこだわりこそが、あなたのプロジェクトを成功に導く武器になります。

ここをクリアしたあなたは、もう初心者ではありません。次のステップでは、複数のファイルを横断してこのフラグをチェックする「プロジェクト横断監視スクリプト」に挑戦してみてください。

応援していますよ。困ったことがあれば、いつでもまた聞きに来てくださいね。

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