【入門編】【中級者向け】複数のプロジェクトを統合する際、各ファイルのベースライン情報を保持したままマージする手法 – Project VBA解析バイブル

スポンサーリンク

こんにちは。プロジェクトマネジメントの現場で、VBAという「魔法の杖」を使いこなそうとしている皆さん。

プロジェクト管理ソフト「Microsoft Project」は非常に強力ですが、複数のサブプロジェクトをマスタープロジェクトに統合した瞬間、「あれ? ベースライン(計画値)が消えてしまった!?」と頭を抱えた経験はありませんか?

これは多くのエンジニアが通る「最初の関門」です。なぜこの現象が起きるのか、そしてどうすればデータを守り抜けるのか。今日は、伝説的なアーキテクトの視点から、その「真相」と「解決策」を伝授しましょう。

なぜサブプロジェクト挿入でベースラインが消えるのか?

結論から言えば、Projectの仕様上、ファイルを「挿入」する際、マスター側の設定とサブ側の設定が干渉し、ベースラインの情報が適切にリンクされない(または表示上リセットされたように見える)挙動をとるためです。

VBAでこれを解決するための核心は、「手動で挿入するのではなく、オブジェクトとして正確に参照し、ベースラインの整合性をプログラムで強制的に再定義する」というアプローチです。

現場で使える「ベースラインを保持したマージ」コード

まずは、以下のコードを見てください。ただファイルをくっつけるのではなく、`SubProject`オブジェクトとして挿入した後、各タスクのベースライン情報を明示的に呼び出す手法です。

Sub MasterProject_Merge_With_Baseline()
‘ プロジェクトのマスターとなるオブジェクトを定義
Dim masterProj As Project
Set masterProj = ActiveProject

Dim subProjPath As String
subProjPath = “C:\Projects\SubProject_A.mpp” ‘ 統合したいファイルのパス

‘ サブプロジェクトを挿入
‘ 重要なのは、挿入後にプロジェクトが正しくロードされているかを確認すること
Dim subTask As Task
Set subTask = masterProj.Tasks.Add

‘ ファイルを挿入(Link:=Trueにすることで、元データと同期させます)
subTask.InsertProjectProject subProjPath, Link:=True

‘ ここが極意:ベースラインの再同期
‘ 挿入直後のプロジェクトオブジェクトを操作し、ベースラインを明示的に更新する
Dim p As Project
For Each p In Application.Projects
If p.FullName = subProjPath Then
‘ プロジェクト単位でベースラインの整合性をチェック
‘ この一行が、データ欠損を防ぐ防波堤になります
p.BaselineSave All:=True, CopyBaseline:=pjBaseline
Debug.Print “Project: ” & p.Name & ” のベースラインを正常に統合しました。”
End If
Next p

MsgBox “マージ完了。データ整合性は保持されています。”
End Sub

コードの解説:ここが「プロ」のこだわり

1. `Link:=True` の真意

`InsertProjectProject` メソッドを使う際、`Link:=True` を指定しないと、それは「データのコピー」に過ぎません。これでは元ファイルが更新されてもマスターに反映されず、ベースラインも分離してしまいます。「リンク(紐付け)」こそが、一貫した管理の第一歩です。

2. `BaselineSave` を手動でトリガーする

なぜわざわざ `BaselineSave` を呼ぶのか? それは、挿入直後のサブプロジェクトは、マスタープロジェクトのコンテキスト(環境)に完全に馴染んでいない場合があるからです。このコードを走らせることで、プロジェクト内のベースラインデータを、マスタープロジェクトのメモリ空間へ強制的に「再マウント」させています。

3. 陥りやすい罠:オブジェクトの存在チェック

初学者が最もやりがちなミスは、挿入直後に即座に `Tasks` を触ろうとすることです。プロジェクトの読み込みにはミリ秒単位のラグが発生することがあります。現場では、`If p.FullName = subProjPath Then` のように、必ず対象が存在することを確認してから操作する「堅牢性」が求められます。

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

皆さん、VBAをただの「作業効率化ツール」だと思っていませんか?
違います。VBAとは、「プロジェクトの整合性を担保するための、壊れない信頼のルール」をコード化したものです。

ベースラインは、プロジェクトの「過去の約束」です。それが統合の過程で消えてしまうことは、技術的には「データの不整合」ですが、プロジェクトマネジメントの観点では「信頼の喪失」を意味します。

今回紹介した手法をマスターすれば、もう「ベースラインが消えた!」と焦ることはありません。自信を持って、複数のプロジェクトを一つの大きな物語へと統合してください。

ここをクリアしたあなたなら、次は「カスタムフィールドを使った詳細な進捗分析」にも挑戦できるはずです。またいつでも相談してくださいね。応援しています!

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