こんにちは! プロジェクト管理の現場で、日々リソースの割り当てやスケジュール調整に頭を悩ませていませんか?
「このタスクに最適なスキルを持ったメンバーは誰だっけ…?」
「スケジュールが空いていて、かつレベルを満たしている人を探すのに何時間もかかっている…」
そんな非効率な泥臭い作業とは、今日でサヨナラしましょう。今回は、Microsoft ProjectのVBA(Visual Basic for Applications)を使って、リソースのスキルタグと稼働状況を自動で照合し、最適な要員を瞬時に抽出する「スキルマッチング検索エンジン」の作り方を解説します。
マクロの記録から一歩抜け出して、本当の意味でProject VBAを使いこなすための極意を、優しく丁寧にお伝えしていきますね。ここをクリアすれば、Project VBAの基本はバッチリですよ!
—
1. なぜ「カスタムフィールド」と「VBA」を組み合わせるのか?
MS Projectには標準でリソースプール機能がありますが、複雑なスキル要件(例えば、「Pythonがレベル3以上、かつ来週空いている人」など)を瞬時に判断してアサインするのは、人間にとっても標準機能にとっても少し荷が重い作業です。
ここで活躍するのが、リソースの「テキスト系カスタムフィールド(Text1〜Text30など)」にスキルタグを埋め込み、VBAで力づく…ではなくスマートに検索させるアプローチです。
押さえておくべきProject VBAの基本構造
Excel VBAと違い、Project VBAでは「タスク(Task)」「リソース(Resource)」「アサインメント(Assignment)」という3つの巨大なオブジェクトが複雑に絡み合っています。
今回はその中から、リソースオブジェクトの持つカスタムフィールドと、稼働状況(Availability)をVBAで縦横無尽にハントする方法を学びます。
—
2. 準備:カスタムフィールドの設定
まずは、Projectの「リソースビュー」を開き、リソースにスキル情報を持たせるための準備をします。
1. メニューの [プロジェクト] > [カスタム フィールド] を開きます。
2. 種類の選択で [リソース] を選び、フィールドの種類を [テキスト] にします。
3. `Text1` の名前を 「スキルタグ」 に変更します(例:「VBA,Python,Excel」のようにカンマ区切りで入力しておきます)。
これで、リソース側に検索の目印ができました。
—
3. 実装:要員自動抽出エンジン(VBAコード)
それでは、今回のメインである検索エンジンのコードを公開します。
VBAエディタ(`Alt + F11`)を開き、標準モジュールに以下のコードを貼り付けてください。
実務ですぐにコピー&ペーストして使えるよう、一行ずつ丁寧なコメントを入れています。
‘ ==============================================================================
‘ 処理名 : スキルマッチング・要員自動抽出エンジン
‘ 概要 : 指定されたスキルキーワードと合致し、リソースプールから最適な候補者を抽出する
‘ ==============================================================================
Sub SearchOptimalResource()
Dim
