【入門編】Projectのガントチャート表示をVBAで制御する:ビューの切り替えとフィルタリングの自動化 – Project VBA解析バイブル

スポンサーリンク

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で工数を削り、空いた時間で「本当に価値のあるプロジェクト分析」に没頭してください。それが、世界最高峰のエンジニアを目指すあなたの第一歩です。

何か詰まったら、いつでも聞いてください。応援していますよ。

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