0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIで申請書を自動で記入しよう!

0
Posted at

はじめに

社内の申請書って、まだまだExcel形式で運用されていることが多いですよね。

たとえば、こんな出張申請書です。

  • 申請者情報
  • 出張内容
  • 費用明細
  • 承認欄
  • 経理部の処理記録

こういったExcelフォームに対して、

「申請日を入れて」
「氏名を入れて」
「出張先を入れて」
「費用明細を埋めて」
「合計金額を計算して」

という作業を毎回手作業でやるのは、地味に面倒です。

そこで今回は、Claude Codeを使ってExcel申請書に自動で内容を記入する方法を紹介します。

やっていることはシンプルです。

  1. 元のExcelフォーマットを用意する
  2. Excelの構造をMarkdownに変換する
  3. Markdownに申請内容を記入する
  4. 記入済みMarkdownをもとにExcelへ書き戻す

AIに直接Excelを編集させるというより、
ExcelとAIの間にMarkdownを挟むのがポイントです。


完成イメージ

今回の流れでは、まず空のExcel申請書を用意します。

出張申請書_empty.xlsx

そのExcelから、以下のようなMarkdownテンプレートを作ります。

# 出張申請書

## 1. 申請者情報

| 項目 | 内容 | 項目 | 内容 |
|---|---|---|---|
| ★ 申請日 |  | ★ 申請番号 |  |
| ★ 所属部門 |  | 課・チーム名 |  |
| ★ 申請者氏名 |  | ★ 社員番号 |  |
| ★ メールアドレス |  | 内線番号 |  |
| 役職 |  | ★ 上長氏名 |  |

そして、このMarkdownに申請内容を記入します。

# 出張申請書

## 1. 申請者情報

| 項目 | 内容 | 項目 | 内容 |
|---|---|---|---|
| ★ 申請日 | 2026-06-23 | ★ 申請番号 | APP-2026-0456 |
| ★ 所属部門 | 営業部 | 課・チーム名 | 第一営業課 |
| ★ 申請者氏名 | 山田太郎 | ★ 社員番号 | E12345 |
| ★ メールアドレス | yamada.taro@company.co.jp | 内線番号 | 2345 |
| 役職 | 主任 | ★ 上長氏名 | 鈴木一郎 |

最後に、この記入済みMarkdownをもとに、元のExcelフォーマットへ値を書き戻します。

Excelのデザインや罫線、色、セル結合はそのまま残しつつ、入力欄だけを埋めるイメージです。


なぜMarkdownを挟むのか

Claude CodeなどのAIエージェントにExcelを直接編集させることもできます。

ただし、Excelは構造が見えにくいです。

たとえば、以下のような問題があります。

  • セル結合がある
  • 入力欄が空白セルになっている
  • ラベルと入力欄の対応が見た目依存になっている
  • 承認欄や処理記録など、申請者が書くべきでない欄がある
  • 必須項目が背景色や記号で表現されている

一方で、Markdownにすると、AIにとってかなり扱いやすくなります。

| 項目 | 内容 |
|---|---|
| ★ 申請者氏名 | 山田太郎 |
| ★ 出張先 | 大阪府大阪市 |
| ★ 出張目的 | 新規顧客への提案商談および契約締結 |

このように、項目名と内容の対応がテキストとして明確になるため、AIが理解しやすくなります。

つまり、今回の方法は次のような考え方です。

Excelフォーム
   ↓
Markdownテンプレート
   ↓
記入済みMarkdown
   ↓
記入済みExcel

全体の流れ

今回の作業は、ざっくり以下の4ステップです。

Step 1. 元のExcelフォーマットを準備する
Step 2. Excelの構造をMarkdownテンプレートにする
Step 3. Markdownに申請内容を記入する
Step 4. Markdownの内容をExcelに書き戻す

Step 1. 元のExcelフォーマットを準備する

まず、空のExcel申請書を用意します。

例として、以下のようなファイルを用意します。

出張申請書_empty.xlsx

このExcelには、すでに以下のようなデザインが入っているものとします。

  • タイトル
  • セクション見出し
  • 罫線
  • 背景色
  • セル結合
  • 入力欄
  • フッター
  • 承認欄

ここでは、Excelの見た目は完成済みという前提です。

AIにゼロからExcel帳票を作らせるのではなく、
すでにあるExcelフォーマットに対して、入力値だけを入れるのが目的です。


Step 2. Excelの構造をMarkdownにする

次に、Claude Codeに元のExcelファイルを参照してもらい、申請書の内容をMarkdown形式のファイルとして書き出してもらいます。

実際にやっていることはかなりシンプルです。

Claude Codeに対して、以下のように依頼します。

元のExcelファイル `出張申請書_empty.xlsx` を参照して、
申請書の構造をMarkdown形式のファイルに書き出してください。

条件:
- Excelのセクション構造をMarkdownの見出しにしてください
- 入力項目はMarkdownテーブルで表現してください
- 必須項目の★は残してください
- 入力欄は空欄のままにしてください
- 承認欄や経理部の処理記録も、フォームの構造としては残してください
- 申請者が記入しない欄は空欄のままにしてください

すると、Claude CodeがExcelの内容を確認し、次のようなMarkdownテンプレートを作成してくれます。

# 出張申請書

※ 必須項目(黄色背景)は必ずご記入ください。出張前に所属部門長の承認を受けてください。

## 1. 申請者情報

| 項目 | 内容 | 項目 | 内容 |
|---|---|---|---|
| ★ 申請日 |  | ★ 申請番号 |  |
| ★ 所属部門 |  | 課・チーム名 |  |
| ★ 申請者氏名 |  | ★ 社員番号 |  |
| ★ メールアドレス |  | 内線番号 |  |
| 役職 |  | ★ 上長氏名 |  |

## 2. 出張内容

| 項目 | 内容 |
|---|---|
| ★ 出張先(都市・国) |  |
| 訪問先企業・部署 |  |
| ★ 出張目的 |  |

ここでは、自分でExcelのセル座標を細かく調べたり、Pythonスクリプトを先に書いたりしているわけではありません。

まずは、Claude Codeに

このExcelをMarkdownにして

と依頼して、Excelフォームの構造をテキスト化してもらうだけです。

ポイントは、Excelの見た目をそのまま再現しようとしすぎないことです。

Markdownでは、AIが理解しやすいように、

  • セクション
  • 項目名
  • 入力値
  • 必須項目
  • 表形式の項目

が分かることを優先します。


Step 3. Markdownに申請内容を記入する

次に、Markdownテンプレートに申請内容を記入します。

たとえば、以下のような申請内容があるとします。

申請日: 2026-06-23
申請番号: APP-2026-0456
所属部門: 営業部
課・チーム名: 第一営業課
申請者氏名: 山田太郎
社員番号: E12345
メールアドレス: yamada.taro@company.co.jp
出張先: 大阪府大阪市
出張目的: 新規顧客への提案商談および契約締結
出張期間: 2026-07-07 〜 2026-07-08
移動手段: 新幹線

これをMarkdownに反映します。

# 出張申請書

※ 必須項目(黄色背景)は必ずご記入ください。出張前に所属部門長の承認を受けてください。

## 1. 申請者情報

| 項目 | 内容 | 項目 | 内容 |
|---|---|---|---|
| ★ 申請日 | 2026-06-23 | ★ 申請番号 | APP-2026-0456 |
| ★ 所属部門 | 営業部 | 課・チーム名 | 第一営業課 |
| ★ 申請者氏名 | 山田太郎 | ★ 社員番号 | E12345 |
| ★ メールアドレス | yamada.taro@company.co.jp | 内線番号 | 2345 |
| 役職 | 主任 | ★ 上長氏名 | 鈴木一郎 |

## 2. 出張内容

| 項目 | 内容 |
|---|---|
| ★ 出張先(都市・国) | 大阪府大阪市 |
| 訪問先企業・部署 | 株式会社サンプル商事 営業部 |
| ★ 出張目的 | 新規顧客への提案商談および契約締結 |
| ★ 出張期間(開始日) | 2026-07-07 |
| ★ 出張期間(終了日) | 2026-07-08 |
| ★ 移動手段 | 新幹線 |
| 同行者 | 佐藤花子 |
| ★ 出張詳細・備考 | 7/7 13:00に先方オフィスにて打合せ予定。1泊し、翌日午前に帰社。 |

## 3. 費用明細(見積)

| No. | 費目 | 内容 | 金額(円) | 備考 |
|---:|---|---|---:|---|
| 1 | 交通費 | 新幹線往復(東京-大阪) | 28000 |  |
| 2 | 宿泊費 | ホテル1泊 | 12000 |  |
| 3 | 出張手当 | 日当2日分 | 6000 |  |
| 4 |  |  |  |  |
| 5 |  |  |  |  |
| 合計 |  |  | 46000 |  |

この時点では、まだExcelには書き込んでいません。

まずはMarkdown上で、

  • 内容に間違いがないか
  • 必須項目が埋まっているか
  • 金額の合計が合っているか
  • 申請者が記入すべきでない欄を埋めていないか

を確認できます。


Step 4. Markdownの内容をExcelに書き戻す

最後に、記入済みMarkdownの内容をExcelへ反映します。

ClaudeCodeで、ファイルを指定して

この内容をを記載して

と指示するだけです。

これで、Excelの見た目を維持したまま、入力欄だけを埋めたファイルを作成できます。


Claude Codeに依頼するプロンプト例

実際には、Claude Codeに以下のように依頼しました。

このExcel申請書を読み取って、記入用のMarkdownテンプレートを作成してください。

条件:
- Excelのセクション構造をMarkdownの見出しにしてください
- 入力欄はMarkdownテーブルで表現してください
- 必須項目は★を残してください
- 空欄は空欄のままにしてください
- 承認欄や経理部の処理記録は、申請者が記入しない欄として空欄のままにしてください

最後に、記入済みMarkdownをExcelに反映します。

この記入済みMarkdownの内容を、元のExcelフォーマットに書き戻してください。

条件:
- Excelのデザイン、罫線、色、セル結合は変更しないでください
- 入力値だけを設定してください
- マージセルの場合は左上セルに値を入れてください
- 承認欄と経理部の処理記録は空欄のままにしてください
- 別ファイルとして保存してください

Skill化する

毎回同じ手順をClaude Codeに説明するのは面倒です。

そこで、今回の作業をSkillとして定義しました。

以下はSkillファイルの例です。

---
name: excel-form-to-markdown
description: Excel形式の申請書・フォーム(.xlsx)をMarkdownに書き出し、記入内容を反映してExcelに書き戻す。「このExcelをmarkdownにして」「申請内容を記載して」「xlsxに反映して」のような依頼で使う。
---

# Excelフォーム ⇄ Markdown 変換スキル

社内申請書などのExcelフォーム(.xlsx)を対象に、以下の3ステップを行うスキルです。

1. Excelの構造をMarkdownのテンプレートとして書き出す
2. テンプレートに実際の申請内容を記入したMarkdownを作成する
3. 記入済みMarkdownの内容を元のExcelファイルの該当セルに書き戻す

## 手順

### Step 1. Excelの内容を読み取り、構造を把握する

`openpyxl` で対象の `.xlsx` を読み込み、値が入っている全セルを座標付きで列挙する。

```bash
python3 -c "
import openpyxl
wb = openpyxl.load_workbook('対象ファイル.xlsx', data_only=True)
for ws in wb.worksheets:
    print('=== SHEET:', ws.title, ws.dimensions, '===')
    for row in ws.iter_rows():
        for cell in row:
            if cell.value is not None:
                print(cell.coordinate, repr(cell.value))
"
```

この出力から、見出し(■で始まる文字列)・必須ラベル(★始まり)・入力欄(マージセルや空セル)のレイアウトを把握する。

### Step 2. テンプレートMarkdownを作成する

Step 1で把握した構造をもとに、セクション見出し(`##`)・表(`| 項目 | 内容 |`)・リストでフォームを再現したMarkdownファイルを作成する。入力欄は空欄のままにする。

### Step 3. 記入済みMarkdownを作成する

ユーザーから実際の記入内容を受け取り、Step 2のテンプレートをコピーして、各項目を埋めた別ファイルとして保存する。

### Step 4. 記入済みMarkdownをExcelに書き戻す

記入済みMarkdownの値と、Excelの実際のセル座標を対応付け、`openpyxl`でセルに値を設定して保存する。

## 注意点

- Excelのレイアウトは対象ファイルごとに異なるため、都度構造を確認する
- 必須項目は記入漏れがないか確認する
- 申請者が記入すべきでない欄は空欄のままにする
- マージセルには左上セルだけに値を設定する

Skill化しておくと、次回からは次のような依頼だけで済みます。

このExcel申請書をMarkdown化してください
この申請内容でMarkdownを記入してください
記入済みMarkdownをもとにExcelへ反映してください

つまり、毎回細かい手順を説明しなくても、
ExcelフォームをMarkdown化して、記入して、Excelに戻すという一連の作業を再利用できます。


この方法の良いところ

この方法の良いところは、AIに任せる範囲を明確にできることです。

AIにいきなりExcelを全部編集させるのではなく、まずMarkdownにします。

そのため、人間も途中で内容を確認できます。

Excel
  ↓
Markdownテンプレート ← 人間が確認しやすい
  ↓
記入済みMarkdown ← 人間が修正しやすい
  ↓
Excel

特に良い点は以下です。

  • Excelのデザインを壊しにくい
  • 入力内容をレビューしやすい
  • Gitで差分管理しやすい
  • AIにとって構造が理解しやすい
  • 申請内容だけを再利用しやすい
  • フォームごとにSkill化できる

Markdownはテキストなので、Gitで管理すると差分も見やすいです。

たとえば、以下のように変更内容が分かりやすくなります。

- | ★ 出張先(都市・国) | 大阪府大阪市 |
+ | ★ 出張先(都市・国) | 愛知県名古屋市 |

Excelを直接比較するよりも、かなりレビューしやすいです。


注意点

便利な方法ですが、注意点もあります。

1. 元のExcelファイルは必ずコピーして使う

AIやスクリプトでExcelを編集する場合、元ファイルを直接上書きするのは危険です。

必ず以下のように、出力ファイルを分けるのがおすすめです。

出張申請書_empty.xlsx
出張申請書_記入済み.xlsx

2. セル結合に注意する

Excelにセル結合がある場合、値を書き込めるのは基本的に結合範囲の左上セルです。

たとえば、C6:E6が結合されている場合は、C6に値を入れます。

ws["C6"] = "2026-06-23"

結合セルの途中に値を入れようとすると、エラーになったり、期待通りに反映されなかったりします。

3. 申請者が書くべきでない欄は埋めない

申請書には、申請者が記入しない欄があります。

たとえば、

  • 承認欄
  • 経理部の処理記録
  • 受付番号
  • 処理完了日
  • 管理部門の備考

などです。

AIに依頼するときは、これらの欄を勝手に埋めないように明示した方がよいです。

承認欄と経理部の処理記録は空欄のままにしてください。

4. 個人情報・機密情報の扱いに注意する

申請書には、氏名、メールアドレス、社員番号、出張先、取引先名などが含まれることがあります。

業務で使う場合は、社内ルールに従ってください。

特に、外部AIサービスに入力してよい情報かどうかは確認が必要です。

サンプル記事や検証では、架空のデータを使うのがおすすめです。


まとめ

今回は、Claude Codeを使ってExcel申請書を自動で記入する方法を紹介しました。

ポイントは、Excelを直接AIに編集させるのではなく、
Excel → Markdown → Excelという流れにすることです。

1. 元のExcelフォーマットを準備する
2. Excelの構造をMarkdownテンプレートにする
3. Markdownに申請内容を記入する
4. 記入済みMarkdownをExcelに書き戻す

この方法にすると、

  • AIが内容を理解しやすい
  • 人間がレビューしやすい
  • Excelのデザインを壊しにくい
  • Skill化して再利用しやすい

というメリットがあります。

申請書、見積書、稟議書、報告書など、
Excelで運用されている社内フォームにはかなり応用できそうです。

AIに全部任せるというより、
AIが扱いやすい中間形式を作って、確実にExcelへ戻す

この考え方が、業務でAIを使うときにはかなり重要だと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?