【入門編】【初心者向け】プロジェクト内のタスクをループ処理で全探索し、特定の条件でフラグを立てる基本手法 – Project VBA解析バイブル

スポンサーリンク

プロジェクトの「心臓部」を掌握する:VBAによるタスク全探索の極意

こんにちは。Project VBAの世界へようこそ。

「マクロの記録」から一歩踏み出し、自らの手でプロジェクトを操りたいと願うあなたへ。今日は、Project VBAにおいて最も基本的でありながら、一生使い続けることになる「タスクの全探索」という技術を伝授します。

これができるようになると、何千行もあるタスクリストの中から、特定の条件に合致するものを見つけ出し、一瞬でフラグを立てたり、ステータスを変更したりできるようになります。

さあ、プロジェクト管理の自動化という「魔術」の第一歩を始めましょう。

なぜ「ループ処理」が必要なのか?

プロジェクト管理において、全てのタスクを人間が目で追い、個別に設定を変更するのは地獄のような作業です。例えば、「期間が5日以上のタスクを特定し、『重点確認』というフラグを立てる」といった処理を想像してみてください。

VBAを使えば、以下のステップを数ミリ秒で完結させることができます。

1. プロジェクト内の全タスクを一つずつ手に取る
2. そのタスクの「期間」を確認する
3. 条件に合致すれば「フラグ」を書き込む

これが「ループ処理」の正体です。

極限までシンプルに:タスク全探索のコード

まずは、何も恐れることはありません。以下のコードをVBE(Visual Basic Editor)に貼り付けてみてください。

Sub FlagLongTasks()
‘ タスクを格納するための変数(これがおまじないです)
Dim tsk As Task

‘ プロジェクト内の全タスクを一つずつ取り出す
For Each tsk In ActiveProject.Tasks
‘ 念のため、タスクが存在するかチェック(空行対策)
If Not tsk Is Nothing Then

‘ 【条件判定】期間が5日(40時間)より長いか?
‘ Projectの期間は「分」単位で管理されているため、5日 = 5 8 60分
If tsk.Duration > (5 8 60) Then

‘ カスタムフィールド「Text1」にフラグを立てる
tsk.Text1 = “重点確認”

‘ 色を変えて目立たせる(オプション)
tsk.FontColor = pjRed
End If

End If
Next tsk

MsgBox “全タスクのチェックが完了しました!”
End Sub

コードの深層解説:ここが「本質」です

1. `For Each tsk In ActiveProject.Tasks`

これが今回の心臓部です。「ActiveProject」という現在開いているプロジェクトの「Tasks」コレクションに対し、一つずつ変数「tsk」に代入して処理を繰り返します。非常に直感的で、ミスの起きにくい書き方です。

2. `If Not tsk Is Nothing Then`

ここが初心者が忘れがちな「陥りやすい罠」です。プロジェクトには「行の途中に空行」がある場合があります。空行は「タスクではない」ため、何もチェックせずにアクセスするとエラーで止まってしまいます。この一行がコードの堅牢性を担保します。

3. 「期間(Duration)」の単位に注意

Project内部では、期間は「分」で保持されています。`5`と書くと「5分」と解釈されるため、日単位で計算したい場合は `5 8 60`(標準的な8時間労働の場合)と換算するのが鉄則です。

さらに先へ進むためのアドバイス

このコードをマスターしたあなたなら、次はこんな応用がすぐにできるようになります。

  • 条件の拡張: `tsk.PercentComplete < 100 And tsk.Finish < Now` (未完了かつ期限切れ)という条件を追加して「警告タスク」を抽出する。
  • WBSの活用: `tsk.OutlineLevel` を使って、特定の階層(サマリータスク)だけを処理対象から除外する。

最後に:自動化は「思考の解放」である

VBAを書くことは、単にマウス操作を代替することではありません。「本来人間が考えるべきプロジェクトの戦略」に集中するための時間を生み出すことこそが、エンジニアである私たちの真の目的です。

最初は難しく感じるかもしれませんが、このコードを自分の環境で動かし、プロジェクトの画面が一瞬で書き換わる瞬間を見てください。その時、あなたはただのプロジェクト管理者から、プロジェクトを「コードで定義するアーキテクト」へと進化しています。

何かエラーが出たり、もっと複雑な処理をしたくなったら、いつでも戻ってきてください。私たちは常にあなたの挑戦を応援しています。

さあ、あなたのプロジェクトを、あなたの手で最適化しましょう!

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