【入門編】【中級者向け】タスクの「カスタムフィールド」をフル活用した、依存関係の論理的根拠の自動記録 – Project VBA解析バイブル

スポンサーリンク

プロジェクトの「なぜ?」をコードで刻む。Project VBAで依存関係の論理的根拠を自動管理する方法

こんにちは。業務自動化の深淵へようこそ。

多くの人がProjectのタスクを「ただ繋ぐだけ」で終わらせてしまいます。しかし、真のプロフェッショナルは違います。「なぜこのタスクが先行タスクに依存しているのか?」という論理的根拠をデータとして保持し、プロジェクトの変遷を履歴として管理するのです。

今日は、Project VBAを使って「カスタムフィールド」をフル活用し、依存関係の根拠を自動記録する仕組みを構築しましょう。これをマスターすれば、あなたのプロジェクト管理は「作業」から「エンジニアリング」へと進化します。

—

なぜ「依存関係の根拠」を記録するのか?

プロジェクトが進行し、タスクのリンク(依存関係)が複雑になると、数ヶ月後に「なぜこのタスクは完了しないと次へ行けないんだっけ?」と混乱することがあります。

カスタムフィールド(Text1など)を「依存関係の根拠(DependencyRationale)」として活用し、VBAで自動的に記録することで、以下のメリットが生まれます。

1. 意思決定の可視化: 変更履歴を追跡可能にする。
2. 属人化の排除: 前任者の思考プロセスがタスクに刻まれる。
3. 自動化の基盤: 誰が、いつ、なぜそのリンクを生成したかをメタデータとして管理できる。

—

ステップ1:カスタムフィールドを準備する

まずは、Projectの画面上で「Text1」フィールドを準備しましょう。

1. Projectの「プロジェクト」タブ > 「カスタムフィールド」をクリック。
2. 「タスク」を選択し、`Text1` を選択。
3. 「名前の変更」で `依存根拠` と入力。

これで、VBAから `Task.Text1` というプロパティ経由で、論理的根拠を読み書きできるようになりました。

—

ステップ2:依存関係を自動構築し、記録するVBA

ここからが本題です。単にリンクを張るだけでなく、その理由を記録するマクロを作成します。

‘ 依存関係を構築し、根拠を記録するプロシージャ
Sub SetTaskDependencyWithRationale()
Dim proj As Project
Dim tskPre As Task
Dim tskSucc As Task

Set proj = ActiveProject

‘ 例: ID 1のタスクが完了したら ID 2のタスクを開始する
Set tskPre = proj.Tasks(1)
Set tskSucc = proj.Tasks(2)

‘ 1. 依存関係の作成 (LinkTasksメソッド)
‘ pjFinishToStart = 終了-開始のリンク
tskSucc.TaskLinks.Add Predecessor:=tskPre, LinkType:=pjFinishToStart

‘ 2. カスタムフィールド(Text1)に論理的根拠を記録
‘ ここで「なぜこのリンクが必要か」を明記する
tskSucc.Text1 = “理由: ” & tskPre.Name & “の成果物が設計フェーズの入力となるため。” & _
” [更新者: ” & Application.UserName & ” / ” & Now & “]”

MsgBox “リンク作成完了: ” & tskPre.Name & ” -> ” & tskSucc.Name, vbInformation
End Sub

コードの重要ポイント解説

  • `TaskLinks.Add`: 依存関係を構築する中核メソッドです。`LinkType`を使い分けることで、FS(Finish-to-Start)以外の特殊なリンクも制御できます。
  • `tskSucc.Text1`: これがカスタムフィールドへのアクセスです。VBAではオブジェクトのプロパティとして非常にシンプルに扱えます。
  • `Application.UserName`: プロジェクトを誰が更新したかをメタデータとして記録する鉄板のテクニックです。

—

よくあるエラーと陥りやすい罠

1. 「オブジェクトが必要です」エラー

これは、指定したIDのタスクがプロジェクト内に存在しない場合に発生します。

  • 対策: `On Error Resume Next` で囲むか、`If Not proj.Tasks(ID) Is Nothing Then` といった存在チェックを必ず行いましょう。

2. 再帰的な依存関係の警告

循環参照(A→B→A)を作ろうとすると、Projectは強制的にリンクを拒否します。

  • 対策: 自動設定を行う前に、対象タスクが自分自身ではないか、親子関係に矛盾がないかをバリデーションするロジックを挟むのがプロの仕事です。

—

さあ、次のステージへ

このコードを応用すれば、Excelからインポートしたタスクリストを読み込み、自動的に依存関係と根拠を付与する「プロジェクト構築自動化エンジン」に発展させることも可能です。

「マクロの記録」から一歩踏み出し、オブジェクトのライフサイクルを意識し始めたあなたなら、きっともっと面白い仕組みを作れるはずです。

ここをクリアすれば、Project VBAの基本はバッチリ。次は「カスタムフィールドをトリガーにした自動通知」や「ガントチャートの自動整形」に挑戦してみてください。

また現場でお会いしましょう。あなたのプロジェクトが、論理的で美しいものになることを願っています。

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