Project VBAを掌握する:ベースラインを「データ」に変える自動化の極意
こんにちは。現場で泥臭く、かつエレガントな自動化を追求し続けているエンジニアです。
皆さんはMicrosoft Project(MSP)を単なる「ガントチャート作成ツール」だと思っていませんか?実はMSPの真価は、その裏側に眠る「ベースライン(計画値)」という宝の山にあります。
今回は、MSPの保存イベントをトリガーに、ベースラインデータを自動でXML化し、Power BI等のBIツールでトレンド分析を可能にするパイプラインの構築術を伝授します。マクロの記録から一歩先へ、真のエンジニアリングの世界へ足を踏み入れましょう。
—
1. なぜ「ベースライン」を抽出するのか?
プロジェクト管理において、最も重要なのは「計画(Baseline)と実績(Actual)の乖離」を可視化することです。しかし、MSPの標準レポートでは、過去の履歴を時系列で比較するトレンド分析には限界があります。
そこで、VBAを使って「保存のたびにベースラインを外部データ化する」というパイプラインを構築します。これにより、BIツール側で「3ヶ月前の計画値と今の見通しはどう変化したか?」を瞬時にグラフ化できるようになります。
—
2. 魔法のトリガー:「Project_BeforeSave」
VBAで特定のタイミングに処理を割り込ませるには、「イベントプロシージャ」を使います。今回は`ThisProject`モジュールに記述することで、保存時に自動実行させます。
実装コード:ベースライン抽出の自動化
以下のコードを、VBAエディタ(Alt + F11)の「ThisProject」モジュールに貼り付けてください。
‘ プロジェクト保存時に自動実行されるイベント
Private Sub Project_BeforeSave(ByVal pj As Project)
On Error GoTo ErrHandler
‘ 保存時にベースラインをXMLとしてエクスポートする
‘ パスは環境に合わせて適宜変更してください
Dim filePath As String
filePath = “C:\ProjectData\Baseline_Export_” & Format(Now, “yyyyMMdd_HHmm”) & “.xml”
‘ MSP標準のSaveAsメソッドをXML形式で活用
‘ pFormat:=pjXML はMS ProjectのXMLスキーマで出力されます
pj.SaveAs Name:=filePath, Format:=pjXML
Debug.Print “ベースラインの抽出に成功しました: ” & filePath
Exit Sub
ErrHandler:
MsgBox “データの抽出に失敗しました。パスを確認してください。” & vbCrLf & Err.Description
End Sub
【知的な補足】コードの要点
- イベントの威力: `Project_BeforeSave`を使うことで、ユーザーの意識なしにデータが蓄積されます。「保存忘れ」によるデータ欠損を防ぐ、エンジニアとしての責任ある設計です。
- Formatの選択: `pjXML`形式で保存することで、Power BIの「XMLコネクタ」が構造を自動認識し、階層データとして取り込めるようになります。
—
3. 初学者が陥りやすい「3つの壁」と対策
ここをクリアすれば、あなたはもう中級者の仲間入りです。
① 「ファイルパスが見つかりません」エラー
- 原因: 指定したディレクトリが存在しない、または書き込み権限がない。
- 対策: `Dir`関数を使って、フォルダの存在確認を事前に行うロジックを加えましょう。
② 大規模プロジェクトでのパフォーマンス低下
- 原因: XMLへのフルエクスポートはプロジェクトサイズに比例して重くなります。
- 対策: プロジェクトが巨大な場合、VBAでタスクをループ処理し、CSV形式で必要な項目(TaskID, Name, BaselineStart, BaselineFinish)のみをテキスト出力する方が高速で軽量です。
③ 「イベントが動かない」
- 原因: マクロが「無効」になっている。または、保存場所がネットワークドライブで書き込み制限がかかっている。
- 対策: 「ファイル」>「オプション」>「トラストセンター」でマクロの設定を確認してください。
—
4. BIツールへの繋ぎ込み:次のステージへ
出力されたXMLファイルをPower BIで読み込むと、以下のような分析が可能になります。
1. 計画の推移線: ベースラインの開始日が、週ごとにどう右肩上がりにズレているか(遅延の傾向)。
2. クリティカルパスの変動: どのタスクが計画の主たる遅延要因になっているか。
これらは、経営層に「なぜ遅れているのか」をデータで説明するための最強の武器になります。
—
最後に:自動化は「愛」です
自動化とは、単なる手抜きではありません。データという「事実」を整理し、自分やチームが本来注力すべき「意思決定」のための時間を捻出するための、プロジェクトに対する愛そのものです。
まずは、今日紹介したコードを動かしてみてください。データがXMLとして出力された瞬間、あなたのプロジェクト管理は、直感に頼るものから、科学的なものへと進化します。
何か詰まったら、いつでも聞いてください。壁を越えるまで、私たちは何度でもコードを書き直せばいいのですから。応援していますよ!
