今回は久々にVBAでツールを作ったのでご紹介。
作ったもの
プロジェクト管理で使える、スケジューリングツール。
タスクリストからタスクの依存関係図(PERT図もどき)を作成して、依存関係を反映させたスケジュールを生成するための補助ツールである。
動機
小規模なプロジェクトを扱う際に、Excelでガントチャートを作成する場合があるが、少しタスク間の依存関係が複雑になると単純なスケジュール表では扱いが難しい。
そこで、タスクとタスクを矢印で結んで依存関係を表すPERT図が欲しくなる。
ja.wikipedia.org
ただ、Excelでこういった作図するのはとても面倒だし、作図した後に複雑な依存関係をガントチャートのようなスケジュール表に落とし込むのも面倒だ。
そこで作図とスケジューリングが簡単に行えるようにツールを作成した。
ちなみに今回作成したツールは厳密なPERT図を作図するものではなく、依存関係を表すためだけの簡易ダイアグラムを作図するツールである。
動作イメージ
百聞は一見にしかずということで、実際に使用している動画をキャプチャーしたのでまずはこちらをご覧いただければと思う。
youtu.be
作業手順の概要
- TaskListシートにタスクを手入力する。
- Drawシートのマクロでタスクを出力する。
- Locateマクロ群と手作業を併用してタスクを並べる。
- Connectマクロ群でタスク同士を接続していく。
- Numberマクロでタスクに番号を振る。
- HolidaysシートのA列に土日以外のプロジェクト休止日(日本の祝日や会社の休業日)を追加する。
- Scheduleシートのマクロでスケジュールを出力する。
- 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日が設定される。
公開場所
Excelファイルだけ欲しい方
binの中のNDT.xlsmを開いてDownloadボタンをクリック
ソースコードだけ見たい方
src/NDT.xlsmを開いて各モジュールを開く
免責事項
完全に自分用に作ったツールなので改善の要望等は受け付けていませんが、ダウンロードして改造して使う分には特に許可は不要です。ただし改造して再配布する場合、出元は示しておいてください。
MITライセンスとして公開していますのでライセンスの概要はご自身で確認お願いします。