Project VBAを掌握せよ:ガントチャートの「視点」をコードで操る極意
こんにちは。現場で泥臭く、しかし誰よりもスマートにプロジェクトを回したいと願うあなたへ。
Microsoft ProjectのVBAは、Excel VBAと似て非なる「独特の癖」があります。特にガントチャートのビュー操作やフィルタリングは、「今、画面に何が映っているか」というコンテキスト(文脈)を正確に掴むことが成功の鍵です。
今日は、手作業でカチカチと切り替えていた「報告用ビュー」を、たった一撃で呼び出す極意を伝授します。
—
1. Project VBAの「主役」を理解する
まず、私たちが操作するオブジェクトのヒエラルキーを脳内にインストールしてください。
- Application: Project全体。全ての頂点。
- ActiveProject: 今、目の前で開かれているファイル。
- ActiveWindow: 今、画面に映っている「枠」。ビューの切り替えやフィルタ操作はここに行います。
「ビューを切り替える」という動作は、Excelのようにセルを操作するのではなく、「今見ているウィンドウのレンズを交換する」というイメージを持ってください。
—
2. ビュー切り替えとフィルタ適用:実用コード
現場ですぐに使える、ビュー切り替えの自動化コードです。これを標準モジュールに貼り付けてみてください。
Sub SwitchToReportView()
‘ エラーハンドリング:ウィンドウが存在しない場合の保険
On Error GoTo ErrorHandler
‘ 1. ビューを「ガントチャート」に変更する
‘ ViewApplyメソッドは、ビューの切り替えに使います
ViewApply Name:=”&ガントチャート”
‘ 2. フィルタを適用する(例:「未完了タスク」のみ表示)
‘ FilterApplyは、現在表示されているデータに絞り込みをかけます
‘ 以前のフィルタを解除するには、ClearFilterが便利です
FilterApply Name:=”未完了タスク”
‘ 3. 画面の更新を促す(パフォーマンス向上)
‘ 大規模プロジェクトでは、SelectAllをしてから表示をリセットすると安定します
SelectAll
MsgBox “報告用ビューへ切り替えました。進捗確認へどうぞ!”, vbInformation
Exit Sub
ErrorHandler:
MsgBox “エラー発生: ” & Err.Description, vbCritical
End Sub
なぜ「&」がついているのか?
Projectの内部名には、言語設定やローカライズの影響を受けないよう、あるいは独自の識別子として「&」が付くことがあります。コードが動かないときは、`ViewApply Name:=”ガントチャート”` のように外してみてください。
—
3. 陥りやすい「3つの罠」
初学者が必ず躓くポイントを、先回りして教えます。
① 「対象外」のビューで操作しようとする
`FilterApply`などは、現在アクティブなビューが「タスクビュー」系でないとエラーを吐くことがあります。ビューを切り替えたら、必ずそのビューが適切にロードされるのを待つ(あるいは明示的に切り替える)のが鉄則です。
② フィルタの解除忘れ
`FilterApply`を使う際、前のフィルタが残ったままだと「データがゼロ件」になることがあります。
‘ フィルタをクリアしてから適用する癖をつける
FilterApply Name:=”&すべて”
FilterApply Name:=”未完了タスク”
このように、「全表示」を一度挟むのが、自動化の安定性を高める最大のコツです。
③ 画面更新のラグ
Projectの処理は重い場合があります。`Application.ScreenUpdating = False` を使うと高速化できますが、必ず最後に True に戻すことを忘れないでください。さもないと、画面がフリーズしたような状態になり、自分が書いたコードに裏切られることになります。
—
4. さあ、次のステップへ
今回のコードは、ほんの入り口に過ぎません。ここから先は、以下のような高度な自動化へと進化させられます。
1. 動的フィルタ: 今日の日付をVBAで取得し、「今週期限のタスク」だけを抽出する。
2. グループ化の活用: `GroupApply` を使い、リソース別や担当者別に一瞬でグルーピングする。
3. 自動PDF出力: 決まったビュー・フィルタを適用した直後に、そのままPDFへエクスポートする。
「マクロの記録」はあくまで参考書。そこから先は、あなたがオブジェクトの主導権を握る番です。
VBAで工数を削り、空いた時間で「本当に価値のあるプロジェクト分析」に没頭してください。それが、世界最高峰のエンジニアを目指すあなたの第一歩です。
何か詰まったら、いつでも聞いてください。応援していますよ。
