Excelの作業を自動化しようと調べはじめると、「VBA」と「Python」という2つの言語が候補に挙がり、どちらを学べばいいのか迷った方もいるのではないでしょうか。
結論を先に言うと、Excelの中だけで完結する作業はVBA、Excelの外(Webサイトの操作、PDF・画像の読み取り、複数システムの連携など)をまたぐ作業はPython、という使い分けが実務的です。この記事では、自作ツールや業務自動化の案件提案でVBAとPythonを使い分けてきた実例をもとに、それぞれが向いている場面と選び方を解説します。
Excel VBAでの自動化に興味がある方は、Excel VBAで見積書・請求書の作成を自動化する方法もあわせてご覧ください。
VBAとPython、5つの観点で比較
まず、両者の違いを表にまとめます。
| 観点 | VBA | Python |
|---|---|---|
| 動かす場所 | Excel内にマクロとして保存し、Excelから実行する | PC上で単体のプログラムとして実行する(別途環境構築が必要) |
| 始めやすさ | Excelさえあれば始められる。セル操作の構文が直感的 | Python本体やライブラリのインストールが最初の壁。構文自体はVBAよりシンプル |
| 得意な処理 | Excel内のセル操作、シート間の集計、印刷設定など | Webサイトの操作、PDFの読み取り、画像の文字読み取り(OCR)、他のサービスとのデータ連携(API)など |
| 実行方法 | Excelを開いてボタンやショートカットで実行 | タスクスケジューラ等で定期実行、またはコマンドで都度実行 |
| ライブラリ | Excel操作に特化した標準機能が中心 | pandas(表データ処理)、Playwright(ブラウザ操作)、PaddleOCR(画像からの文字読み取り)など、用途別のライブラリが豊富 |
表だけ見ると「Pythonの方が何でもできそう」に見えますが、Excel作業に限って言えばVBAの方が手軽なケースも多くあります。次の実例で、実際にどちらを選んだかを見ていきます。
実際にどちらを選んだか(自分の実例4つ)
自作ツールや案件提案(試作デモを含む)で、実際にVBAとPythonを使い分けた例を4つ紹介します。
例1:見積書・請求書の作成自動化 → VBA
入力した品目・数量から見積書・請求書のフォーマットに自動で転記し、金額を計算するツールです。作業がすべてExcelの中で完結するため、VBAを選びました。詳細はExcel VBAで見積書・請求書の作成を自動化する方法で紹介しています。
例2:決算書PDFの個人情報マスキング → Python
決算書のPDFから、残してよい語句(金額や勘定科目など)をあらかじめ登録しておき、それ以外の社名・人名・住所などを黒塗りするツールです(ホワイトリスト方式)。対象がExcelではなくPDF・画像で、VBAには標準でこうした処理のライブラリがないため、最初からPython一択でした。
試作では、PDFに埋め込まれた文字とその位置をPythonのライブラリ(PyMuPDF)で取り出して判定しました。スキャンした画像のPDFには、文字を読み取る処理(OCR:PaddleOCR/YomiTokuなど)を後から組み込む設計です。
例3:領収書の自動収集・保存 → Python
複数のWebサービスから領収書PDFを取得し、リネームしてクラウドストレージに保存する処理を提案した例です。ブラウザを自動操作して複数のサービスを横断する必要があるため、Pythonのブラウザ自動化ライブラリ(Playwright)を選びました。提案前には、架空の請求サイトを相手に「ログイン→PDF取得→リネーム→保存」まで動くデモを作って確かめています。Excelの中だけでは完結しない、Webをまたぐ処理の典型例です。
例4:既存Webシステムへの機能追加 → Python
既存のWebシステムに、外部から取得したデータをもとに通知を送る機能を追加する案件に提案した例です。Excelと無関係の処理であることに加え、既存システムがPython製のWebアプリケーションだったため、VBAという選択肢自体がなく、既存の技術に合わせてPythonで進める提案をしました。
この4例からも分かるように、選んだ基準はいつも同じです。処理がExcelの中に閉じているか、それともExcelの外(Web・PDF・画像・既存システム)をまたぐか、という1点で決めています。
どちらを学ぶべきかの判断基準
これから学ぶ場合の判断基準は、次のように整理できます。
- Excel作業の自動化だけで十分な場合:導入コストが低いVBAから始めるのがおすすめです。Excelさえあれば追加のインストールなしに始められます
- Webサイトの操作・PDFや画像の読み取り・複数システムの連携が必要な場合:Pythonを選びます。VBAの標準機能ではこうした処理が難しく、Pythonの方が用途別のライブラリが充実しています
- 業務自動化を本格的にやっていきたい場合:まずVBAで「繰り返し処理」「条件分岐」といった自動化の基本発想に慣れてから、必要になったタイミングでPythonを追加で学ぶのがスムーズです。VBAで身につく考え方は、Pythonでもほぼそのまま使えます
迷ったら、「今困っている作業がExcelの中だけで終わるかどうか」を自分に問いかけてみてください。
それぞれの限界・注意点
- VBAの限界:Excel(Office)が入っている環境でしか動きません。WordやOutlookなど他のOffice製品は操作できますが、Webサイトの操作やPDFの読み取りは標準機能だけでは難しく、外部ツールの追加が必要になります
- Pythonの限界:最初に環境構築(Python本体・必要なライブラリのインストール)が必要で、ここでつまずく人が多いです。Excel操作だけが目的なら、この手間に見合わないこともあります
「どちらが優れているか」ではなく、「今解決したい作業がどちらの土俵にあるか」で選んでみてください。
まとめ
VBAとPythonは優劣で比べるものではなく、Excelの中で完結する作業か、Excelの外をまたぐ作業かで選ぶのが実務的な使い分けです。
Excel作業の自動化を試してみたい方は、Excel VBAで見積書・請求書の作成を自動化する方法やExcel VBA初心者がまず覚えるべき基本構文まとめ、複数シートのデータを1つにまとめるVBAマクロの作り方から。プログラミングなしで生成AIを使いたい方は、生成AIを使った業務効率化ネタ5選もあわせてご覧ください。