Skip to content

Repository files navigation

執務表 自動化ツール (完全データ駆動版)

消防部隊の執務表(通信指令 / 受付 の一次指定者)を自動生成するExcel + VBAツール。 ポジション×時間帯のルールはすべてシートで管理、VBAにハードコードなし。 署所ごとの違いもシート編集だけで対応可能。

構成

ファイル 役割
執務表自動化.xlsx Excel本体(7シート構成)
ShiftScheduler.bas VBAマクロ(VBAコードシートにも埋込)
build_template.py テンプレート再生成スクリプト
sim_scheduler.py Python動作検証シミュレータ

シート構成

  1. 執務表 — 印刷用、一次指定者が自動で埋まる
  2. 当日チェック — 毎当番の入力(日付 + 氏名ごとのポジション + 追加除外時間帯)
  3. ポジション定義 — 🔑 ポジション × 時間帯 のブロックマトリクス(自由編集)
  4. 名簿 — 氏名のみ(30名バッファ)
  5. 履歴 — 過去当番を自動累積
  6. 使い方 — 操作手順
  7. VBAコード — 貼付用ソースコード

初回セットアップ

  1. 執務表自動化.xlsx を開く
  2. 名前を付けて保存.xlsm (マクロ有効ブック)
  3. Alt+F11 → ThisWorkbook 右クリック → 挿入 → 標準モジュール
  4. VBAコードシートのA12以下を全選択コピー (Ctrl+Shift+EndCtrl+C)
  5. 新規モジュールに貼付 (Ctrl+V)
  6. 執務表シートにボタン2つ配置
    • GenerateShift — 本日生成
    • ShowDateFromHistory — 過去日表示

日次の流れ

  1. 当日チェックシートで:
    • B3 当番日を更新
    • 各隊員の 今日のポジション をドロップダウンから選ぶ
    • 半日不在があれば 除外1〜3 の開始/終了時間帯 を入れる
  2. 執務表シートの「本日を生成」ボタン
  3. 印刷 or Word様式にコピペ

ポジション定義シートの使い方

マトリクス: 行=ポジション名、列=時間帯(25枠)、セルに × を入れるとその時間帯ブロック。

初期登録済みポジション:

  • ポンプ隊 / 救助隊 / はしご隊 / 伝令 / 通信担当 / 情報担当 / 情報員 / 署隊長伝令 / 残留 / 署隊本部支援員 / その他 (いずれも初期ブロックなし、自由に割当可)
  • 救急隊 (全時間×、基本不参加)
  • 当直士長 (18-19, 19-20, 6-7, 7-8 ×)
  • 食当 (14-17 ×)
  • 休暇 / 研修/出向 (全時間×)

カスタマイズ例

  • 「方面訓練」ポジションを新設 → 新規行追加、特定時間帯に × を入れる
  • 「食当+当直主任」のような複合ポジション → 新規行、両方の × を入れる
  • 署所独自の勤務ルール → 既存ポジションの × を書き換える

VBAに残る汎用ロジック

業務固有ルールはすべてデータ化。VBAに残るのはスケジューリング補助のみ:

ルール 実装場所
ポジション×時間帯ブロック ポジション定義シート
個人の追加除外時間帯 当日チェックシート
通信と受付は同時刻で別人 VBA (構造)
12勤と17勤は別人 VBA (後処理)
深夜(22-4時)は一人1回まで VBA (スコアリング)
夜20時以降は前日同時刻と別人 VBA (スコアリング)
前日の一つ上にずらす VBA (スコアリング)
10-17時は一人最低1回勤務 VBA (スコアリング)
連続割当回避 VBA (スコアリング)

過去の日を見たい場合

  • 執務表 B2 に yyyy/m/d で日付 → ShowDateFromHistory ボタン

テンプレート再生成(開発者向け)

pip install openpyxl
python3 build_template.py     # .xlsx 再生成
python3 sim_scheduler.py      # ロジック検証

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages