t-hom’s diary

主にVBAネタを扱っているブログです。

VBA PERT図もどきを作図して依存関係を考慮したスケジュールを自動生成するツール

今回は久々にVBAでツールを作ったのでご紹介。

作ったもの

プロジェクト管理で使える、スケジューリングツール。

タスクリストからタスクの依存関係図(PERT図もどき)を作成して、依存関係を反映させたスケジュールを生成するための補助ツールである。
f:id:t-hom:20210526011311p:plain

動機

小規模なプロジェクトを扱う際に、Excelでガントチャートを作成する場合があるが、少しタスク間の依存関係が複雑になると単純なスケジュール表では扱いが難しい。

そこで、タスクとタスクを矢印で結んで依存関係を表すPERT図が欲しくなる。
ja.wikipedia.org

ただ、Excelでこういった作図するのはとても面倒だし、作図した後に複雑な依存関係をガントチャートのようなスケジュール表に落とし込むのも面倒だ。

そこで作図とスケジューリングが簡単に行えるようにツールを作成した。

ちなみに今回作成したツールは厳密なPERT図を作図するものではなく、依存関係を表すためだけの簡易ダイアグラムを作図するツールである。

動作イメージ

百聞は一見にしかずということで、実際に使用している動画をキャプチャーしたのでまずはこちらをご覧いただければと思う。
youtu.be

作業手順の概要

  1. TaskListシートにタスクを手入力する。
  2. Drawシートのマクロでタスクを出力する。
  3. Locateマクロ群と手作業を併用してタスクを並べる。
  4. Connectマクロ群でタスク同士を接続していく。
  5. Numberマクロでタスクに番号を振る。
  6. HolidaysシートのA列に土日以外のプロジェクト休止日(日本の祝日や会社の休業日)を追加する。
  7. Scheduleシートのマクロでスケジュールを出力する。
  8. STARTタスクのPlanned Startにプロジェクト開始日を手動更新する。

マクロボタンの説明

Plot Tasks

TaskListシートに記入されたタスクを円形のオートシェイプで出力する。

Order Node Vertical

Shiftを押しながら連続でタスクのシェイプを選択してから実行すると、選択したタスクが縦に並ぶ。

Swap Node Location

2つのシェイプを選択した状態で実行すると、位置を入れ替える。

Connect Straight

Shiftを押しながら連続でタスクのシェイプを選択してから実行すると、選択したタスクの順に矢印が接続される。

Connect Split

Shiftを押しながら連続でタスクのシェイプを選択してから実行すると、最初に選択したタスクから、各タスクに向かって矢印が接続される。

Connect Marge

Shiftを押しながら連続でタスクのシェイプを選択してから実行すると、各タスクから最後に選択したタスクに向かって矢印が接続される。

Find Disconnection

コネクターを誤ってドラッグした等で、接続が切れたコネクターを赤色に変更して目立たせる。
再度手動で接続した後に実行すると黒に戻る。
スケジュールシートではこの接続関係を使用するため、コネクターが切断されているとスケジュールを作成できない。

Number Nodes as Selection Order

Shiftを押しながら連続でタスクのシェイプを選択してから実行すると、選択した順にタスクに番号が振られる。
スケジュールシートではこの番号を使用するため、この工程は必須である。

Unnumber All Nodes

すべてのタスクから番号を除去する。
このマクロは番号の振り直しのためのリセット用である。
スケジュールシートではタスク番号を使用するため、最終的にはすべてのタスクに番号が付いていないと次の行程に進めない。

Remove All Shapes

やり直し用。すべてのシェイプが削除される。

Remove Connections

接続のやり直し用。すべてのコネクターが削除される。

Plot Schedule

Drawシートの依存関係を元にスケジュールを出力する。
Planned Startは依存元タスクのPlanned End + 1日が設定される。
Planned EndはPlanned Start + Duration(日)が設定される。
複数タスクに依存する場合のPlanned Startは依存元タスクのPlanned Endのうち最も遅いものをMAX関数で取得しており、その日付+1日が設定される。

公開場所

github.com

Excelファイルだけ欲しい方

binの中のNDT.xlsmを開いてDownloadボタンをクリック

ソースコードだけ見たい方

src/NDT.xlsmを開いて各モジュールを開く

免責事項

完全に自分用に作ったツールなので改善の要望等は受け付けていませんが、ダウンロードして改造して使う分には特に許可は不要です。ただし改造して再配布する場合、出元は示しておいてください。

MITライセンスとして公開していますのでライセンスの概要はご自身で確認お願いします。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。