PythonでExcel自動化はどこまでできる?VBAとの使い分けと始め方
Pythonは、大量データの集計や複数ファイルの一括処理、決まった時刻の定期実行に強く、Excel自動化の手段としてVBAと並ぶ選択肢です。プログラミング経験がなくても、生成AIにコードを書かせて動かすところまでは十分に到達できるようになりました。VBAとの使い分けと、未経験から始める道筋を整理します。
結論から
- Pythonは「大量データの処理」「複数ファイルの一括処理」「毎日決まった時刻の自動実行」に強く、VBAは「Excelの中で完結する操作」「他の社員のPCでもすぐ動かす」ことに強い、という住み分けです
- プログラミング経験がなくても、生成AIにコードを書かせて動かすところまでは十分に到達できます。ただし「動いたコードを検証する」工程は省けません
- 週に数時間かかっている定型作業が対象なら検討する価値があります。月1回・数分の作業なら、自動化の手間のほうが大きくなりがちです
PythonでExcelの何が自動化できるのか
Pythonは無料で使えるプログラミング言語で、Excelファイルを読み書きするための道具(ライブラリ)が充実しています。代表的なものが「pandas(パンダス)」と「openpyxl(オープンパイエクセル)」です。
pandasは表データの集計・加工が得意で、数十万行のデータでも、部門別集計・月次集計・複数表の突合といった処理を短いコードで実行できます。openpyxlはExcelファイルそのものの操作が得意で、セルの書式設定、シートの追加、既存フォーマットへの値の差し込みなどができます。この2つを組み合わせると、たとえば次のような業務を自動化できます。
ポイントは「人がExcelを開いて手を動かす」のではなく、「プログラムがファイルを直接読み書きする」という点です。Excelを開かずに処理が終わるため、件数が増えても作業時間はほとんど変わりません。
- 支店ごとに送られてくる30個のExcelファイルを1つにまとめて集計する
- 基幹システムから出力したCSVを整形し、毎月の報告書フォーマットに流し込む
- 毎朝決まった時刻にデータを取り込み、集計結果を保存しておく
VBAとPythonの使い分け
「マクロ(VBA)でいいのでは?」という疑問はもっともです。どちらが優れているかではなく、作業の性質で選ぶのが現実的です。
大まかには、「他の人のExcelに組み込んで配るならVBA、大量データや定期実行ならPython」と覚えておけば大きく外しません。両方を使う必要はなく、いま困っている作業に近いほうから始めれば十分です。
| 観点 | VBA(マクロ) | Python |
|---|---|---|
| 実行環境 | Excelがあれば動く。他の社員への配布が簡単 | PCへのインストールと環境設定が必要 |
| 大量データ | 数万行を超えると遅くなりやすい | 数十万行でも実用的な速度で処理しやすい |
| 定期自動実行 | 基本は人がExcelを開いて実行 | タスクスケジューラ等で無人実行しやすい |
| Excel以外との連携 | Excel周辺が中心 | CSV・Web・データベース・メール等と幅広い |
| 向いている作業 | ボタンを押して使う社内ツール | 裏側で回す大量・定期のデータ処理 |
| 学習・保守 | Excel利用者には馴染みやすい | 情報が豊富でAIの支援も受けやすい |
プログラミング未経験でも始められるのか
以前は「Pythonを学んでから自動化」という順番でしたが、現在は生成AIにコードを書かせる方法が現実的になっています。進め方の一例です。
注意点もあります。AIが書いたコードは一見正しく動いても、空白行や結合セルなど「例外的なデータ」で誤動作することがあります。最初の数回は必ず手作業の結果と照合し、例外パターンを見つけたらコードに反映していく運用が安全です。
- 作業を言葉にする。「フォルダ内の全Excelの『売上』シートを縦につなげて、部門別に合計したい」のように、入力・処理・出力を文章にします
- AIにコードを依頼する。ChatGPTやClaudeなどに上の文章を渡すと、pandasを使ったコードを提示してくれます
- コピーしたデータで試す。元ファイルは触らず、必ず複製で実行します
- 結果を検算する。件数と合計値を手作業の結果と突き合わせます。ここを飛ばすと「動くが間違っている」コードに気づけません
- エラーはAIに貼って聞く。エラーメッセージをそのまま貼り付けると、原因と修正案を返してくれます
Python自動化が向かないケース
正直にお伝えすると、Pythonが不向きな場面もあります。
- 担当者のPCにPythonを入れられない。セキュリティ方針でインストールが制限されている会社では、VBAやPower Queryのほうが導入しやすいことがあります
- 作業のルールが毎回変わる。手順が定まっていない業務は、自動化してもすぐ作り直しになります。先にルールを固めるほうが先です
- 保守する人がいない。書いた本人しか触れないコードは、VBAの属人化と同じ問題を生みます。コメントと仕様メモを残す前提で始めてください
- 頻度も件数も少ない。月1回・10分の作業なら、手作業のままのほうが合理的な場合があります
よくあるご質問
- PythonとVBA、これから覚えるならどちらがよいですか?
- 自動化したい作業によります。Excelの中で完結する操作の自動化ならVBA、複数ファイルの統合や大量データの集計、定期実行が中心ならPythonが向いています。生成AIの支援を受けやすいのはどちらも同じなので、「いま困っている作業に近いほう」から始めるのが遠回りしないコツです。
- 無料でできますか?
- Python本体とpandas・openpyxlなどの主要ライブラリは無料で使えます。費用がかかるとすれば、生成AIの有料プランや、社内で作れない場合の外注費です。まずは無料の範囲で小さく試すことをおすすめします。
- AIが書いたコードをそのまま業務で使って大丈夫ですか?
- そのまま本番投入するのは避けてください。コピーしたデータで実行し、件数・合計値を手作業の結果と照合してから使うのが基本です。また、社外のAIサービスにデータそのものを渡す場合は、機密情報の扱いを事前に確認してください(コードを書かせるだけならデータを渡す必要はありません)。