【Project VBA極限攻略】ベースラインをXMLで抽出せよ!BI連携による「進捗の可視化」自動パイプライン構築術
皆さん、こんにちは。現場で泥臭くプロジェクトを管理し、そのデータに翻弄されていませんか?
「プロジェクトの進捗、結局どこでズレたのか?」
この問いに答えを出すために、皆さんは手作業でCSVを吐き出し、ExcelでVLOOKUPを繰り返しているはずです。しかし、今日でその苦行は終わりです。
今回は、Project VBAを駆使して「ベースライン(計画)と実績の差分」をXML形式で抽出し、Power BIで可視化する自動パイプラインの構築方法を伝授します。マクロの記録から一歩先へ進みたいあなたへ、アーキテクトの視点から「真の自動化」をお見せしましょう。
—
1. なぜ「XMLエクスポート」なのか?
CSVは単純ですが、プロジェクトの階層構造(WBS)やリソース割り当てという複雑なデータを保持するのには不向きです。一方、XMLは「データの構造」そのもの。
- 階層構造の維持: 親タスクと子タスクの親子関係が崩れない。
- BIツールとの親和性: Power BIやTableauはXMLのスキーマを読み取るのが得意。
- 自動化の容易さ: Projectの標準機能である「マップ定義」をVBAから操作するだけで、理想的な出力が得られます。
—
2. 準備:ベースラインを「可視化できる形」にする
まずは、Project内部の「ベースライン」という概念を理解しましょう。これは、プロジェクト開始時の「約束の姿」です。
プロジェクトファイルでの設定チェック
1. [プロジェクト]タブ → [ベースラインの設定] から、ベースラインを保存しておくこと。
2. [ファイル] → [名前を付けて保存] で、あらかじめXML形式での出力マップ(エクスポートマップ)を作成しておくと、VBAでの制御が劇的に楽になります。
—
3. 実装:VBAによる自動エクスポート・パイプライン
以下のコードは、現在のプロジェクトデータを「Baseline_Export.xml」として吐き出すエンジンです。
‘ Project VBA: ベースライン差分抽出エンジン
Sub ExportBaselineToXML()
Dim proj As Project
Set proj = ActiveProject
‘ 出力先の定義(フルパスで指定)
Dim exportPath As String
exportPath = Environ(“USERPROFILE”) & “\Desktop\ProjectBaseline.xml”
‘ 【重要】「マップ名」は、あらかじめProjectの[ファイル]>[名前を付けて保存]>[XML形式]で
‘ 作成したエクスポートマップの名前と一致させること。
‘ ここが自動化の肝です。
Dim mapName As String
mapName = “MyProjectMapping”
On Error GoTo ErrorHandler
‘ エクスポート実行
‘ DocExport: プロジェクト全体を特定のマップに基づいてXML化する
FileSaveAs Name:=exportPath, Format:=pjXML, Map:=mapName
MsgBox “ベースラインの抽出が完了しました! BIツールで読み込んでください。”, vbInformation
Exit Sub
ErrorHandler:
MsgBox “エラー発生: ” & Err.Description, vbCritical
End Sub
コードの解説
- `FileSaveAs`: これが最も堅牢なメソッドです。`Format:=pjXML`を指定することで、内部データをXML構造に変換します。
- `mapName`: これが初学者が躓くポイント。XML出力時の「フィールド対応付け」を定義したマップを事前に作成しておかないと、必要なデータ(ベースライン開始日など)が漏れます。
—
4. 陥りやすいエラーと回避策
① 「マップが見つかりません」エラー
これは、Projectがグローバルテンプレートにアクセスできていない時に起こります。
- 回避策: マップをプロジェクトファイル内に埋め込むか、コード実行前にマップが存在するかチェックするロジックを入れてください。
② データが空のXMLができる
- 原因: ベースラインが保存されていない、あるいはマップ内の「フィールド」選択が間違っています。
- 極意: Projectの「エクスポートマップ」の設定画面で、「ベースライン開始日」「ベースライン終了日」がフィールドリストに含まれているかを必ず確認してください。
—
5. 次のステップ:BIツール(Power BI)への接続
XMLが書き出されたら、あとはPower BIで「データを取得」→「ファイル」→「XML」を選択するだけです。
Power Queryエディタで「展開(Expand)」機能を使えば、複雑なWBSも一瞬でフラットなテーブルに変換されます。
これで、あなたのPC上で「計画との乖離」が毎日自動的にグラフ化される環境が整いました。
—
最後に:エンジニアとして成長するために
今回紹介したのは「XMLを吐き出す」というシンプルな自動化ですが、これは「データ駆動型プロジェクト管理」への第一歩です。
マクロの記録を卒業した皆さんは、次に「DAO(Data Access Object)を理解する」ことや「外部APIとの連携」を目指してください。Project VBAは古い言語に見えますが、プロジェクトデータの深淵に触れられる唯一無二の武器です。
「なぜ動くのか?」を意識したコードは、必ずあなたを助けてくれます。現場の課題を、技術でねじ伏せていきましょう。質問があればいつでもどうぞ。応援していますよ!
