Excelの作業を自動化するとき、多くの人が利用しているのが「VBA(Visual Basic for Applications)」です。
VBAを使えば、Excelのデータ入力や集計、ファイル作成など、さまざまな作業を自動化できます。
一方で、最近ではVBAの代わりにPythonを使ってExcel作業を自動化する方法も注目されています。
PythonにはExcel専用ではないという特徴があり、Excelだけでなく、CSVファイルや画像、Web、APIなど、さまざまなデータを扱うことができます。
この記事では、VBAを使っている人や、これからExcel作業をPythonで自動化したい人に向けて、VBAとPythonの違いや、PythonでExcelを操作する方法をわかりやすく解説します。
- VBAの代わりにPythonを使うことはできる?
- VBAとPythonの違い
- PythonでExcelを操作するために必要なもの
- PythonでExcelのセルにデータを書き込む
- PythonでExcelのデータを読み込む
- PythonでExcelのデータを繰り返し処理する
- PythonでExcelのデータを自動集計する
- Pythonなら複数のExcelファイルも処理できる
- PythonならExcel以外の作業も自動化できる
- VBAからPythonに移行するメリット
- VBAからPythonに移行するデメリット
- VBAとPythonはどちらを使えばいい?
- VBA経験者がPythonを学ぶなら何から始めればいい?
- PythonはVBAの完全な代わりではない
- まとめ
VBAの代わりにPythonを使うことはできる?
結論からいうと、VBAで自動化していたExcel作業の多くは、Pythonでも自動化できます。
例えば、次のような作業です。
- Excelファイルを読み込む
- セルにデータを書き込む
- セルのデータを読み込む
- 複数のシートを処理する
- Excelデータを集計する
- 複数のExcelファイルをまとめる
- CSVファイルを読み込む
- Excelファイルを自動作成する
- 定型的なデータ処理を自動化する
Pythonでは、Excelファイルを操作するためのライブラリが用意されています。
代表的なのがopenpyxlです。
openpyxlを使えば、PythonからExcelファイルを読み込んだり、セルに値を書き込んだりできます。
また、大量のデータを扱う場合には、pandasというライブラリもよく利用されます。
つまり、
VBAでExcelを自動化する
↓
PythonでExcelを自動化する
という置き換えが可能です。
ただし、PythonがVBAの完全な上位互換というわけではありません。
Excelだけで完結する簡単な作業なら、VBAのほうが手軽な場合もあります。
VBAとPythonの違い
VBAとPythonは、どちらもプログラムを書くことで作業を自動化できます。
しかし、それぞれ得意なことが異なります。
VBAはExcelとの相性が良い
VBAはMicrosoft Office製品に組み込まれているプログラミング言語です。
特にExcelとの相性が良く、Excelを操作するための機能が最初から用意されています。
例えば、
- セルを操作する
- シートを追加する
- グラフを作成する
- Excelの書式を変更する
- ボタンをクリックして処理を実行する
- Excelファイルを自動作成する
といった処理ができます。
Excelを中心に仕事をしている場合、VBAは非常に便利な選択肢です。
PythonはExcel以外の処理も得意
Pythonの大きな特徴は、Excel専用のプログラミング言語ではないことです。
例えばPythonでは、Excelだけでなく、
- CSV
- 画像
- Web
- データベース
- API
- AI
- 機械学習
など、さまざまなデータやサービスを扱えます。
そのため、Excelを起点として、他の作業までまとめて自動化したい場合にはPythonが便利です。
例えば、
Webからデータを取得
↓
Pythonでデータを加工
↓
Excelに保存
↓
集計結果を作成
といった処理もできます。
PythonでExcelを操作するために必要なもの
PythonでExcelファイルを操作する場合、用途に応じてライブラリを使います。
代表的なのは次の2つです。
| ライブラリ | 主な用途 |
|---|---|
| openpyxl | Excelファイルの読み書き |
| pandas | データの加工・集計・分析 |
Excelファイルを直接操作したい場合は、まずopenpyxlを覚えるとよいでしょう。
大量のデータを集計したり、表形式のデータを加工したりする場合には、pandasが便利です。
openpyxlをインストールする
openpyxlを使用するには、まずインストールします。
コマンドプロンプトやターミナルで、次のコマンドを実行します。
pip install openpyxl
これでPythonからExcelファイルを操作できるようになります。
openpyxlのインストールの詳しい解説はこちらの記事をご覧ください。
PythonでExcelのセルにデータを書き込む
まずは、VBAとPythonで同じような処理を比較してみましょう。
VBAでは、例えば次のようにセルへ文字を書き込めます。
Range("A1").Value = "こんにちは"
Pythonでは、openpyxlを使って次のように書けます。
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws["A1"] = "こんにちは"
wb.save("sample.xlsx")
このプログラムを実行すると、「sample.xlsx」というExcelファイルが作成されます。
A1セルには「こんにちは」と書き込まれます。
Pythonでは、
ws["A1"] = "こんにちは"
のようにセルを指定できます。
PythonでExcelのデータを読み込む
既存のExcelファイルを読み込むこともできます。
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb.active
value = ws["A1"].value
print(value)
実行すると、A1セルに入っている値が表示されます。
VBAでExcelのセルから値を取得する場合は、
value = Range("A1").Value
のように書けます。
Pythonでは、
value = ws["A1"].value
となります。
このように、基本的なセル操作はPythonでも行えます。
PythonでExcelのデータを繰り返し処理する
Excel自動化では、同じ処理を大量のデータに対して繰り返すことがあります。
例えば、sales.xlsx というファイルの中身が下のようになっているとします。
A列 B列
商品名 売上金額
りんご 1200
みかん 800
バナナ 1500
Pythonではfor文を使って、複数の行をまとめて処理できます。
from openpyxl import load_workbook
wb = load_workbook("sales.xlsx")
ws = wb.active
for row in range(2, ws.max_row + 1):
product = ws.cell(row=row, column=1).value
sales = ws.cell(row=row, column=2).value
print(product, sales)
これによって、Excelの2行目から最後の行まで順番に処理できます。
VBAで繰り返し処理を行う場合はFor文などを使いますが、Pythonでも同じように繰り返し処理ができます。
PythonでExcelのデータを自動集計する
Pythonを使えば、Excelに保存されている売上データなどを自動的に集計することもできます。
例えば、売上金額を合計する処理です。
from openpyxl import load_workbook
wb = load_workbook("sales.xlsx")
ws = wb.active
total = 0
for row in range(2, ws.max_row + 1):
sales = ws.cell(row=row, column=2).value
if sales is not None:
total += sales
print("売上合計:", total)
Excelファイルを開いてデータを確認し、電卓などで合計する必要がなくなります。
毎日同じような集計作業をしているのであれば、Pythonによって作業時間を削減できる可能性があります。
より詳しいExcelデータの集計方法については、こちらの記事でも解説しています。
Pythonなら複数のExcelファイルも処理できる
Pythonの便利なところは、1つのExcelファイルだけでなく、複数のファイルをまとめて処理できることです。
例えば、次のようなExcelファイルがフォルダに保存されているとします。
売上データ/
├─ 2026年1月.xlsx
├─ 2026年2月.xlsx
├─ 2026年3月.xlsx
├─ 2026年4月.xlsx
└─ 2026年5月.xlsx
これらを1つずつ開いて集計するのではなく、Pythonにまとめて処理させることができます。
例えば、Pythonではフォルダ内のExcelファイルを取得できます。
from pathlib import Path
folder = Path("売上データ")
for file in folder.glob("*.xlsx"):
print(file)
これによって、フォルダ内にあるExcelファイルを順番に取得できます。
あとは、それぞれのファイルをopenpyxlなどで読み込み、必要なデータを集計します。
このような「同じ作業を何度も繰り返す」という処理は、Pythonによる自動化と相性が良い部分です。
より詳しい複数のファイルの処理の仕方については、こちらの記事でも解説しています。
PythonならExcel以外の作業も自動化できる
VBAからPythonへ移行する大きなメリットの一つが、Excel以外の処理にも応用できることです。
CSVファイルを処理する
PythonではCSVファイルを簡単に読み込めます。
例えば、売上データがCSV形式で保存されている場合、そのデータをPythonで読み込み、加工してExcelファイルに出力することもできます。
PythonでCSVファイルを操作する方法をこちらの記事で解説しています。
画像をまとめて処理する
Pythonでは画像処理もできます。
例えば、
- 画像のサイズ変更
- ファイル形式の変換
- 複数画像の一括処理
- ファイル名の変更
などを自動化できます。
Excelで管理している商品画像をまとめて処理する、といった使い方もできます。
Excelで画像を一括処理する方法をこちらの記事で解説しています。
Webからデータを取得する
PythonではWebサイトから情報を取得する処理も可能です。
例えば、
Webサイト
↓
Python
↓
データを取得
↓
必要な情報を加工
↓
Excel・CSVに保存
という自動化もできます。
ただし、Webサイトからデータを取得する場合は、対象サイトの利用規約やrobots.txtなどを確認し、適切な方法で利用することが重要です。
PythonでWebサイトからデータを取得する方法をこちらの記事で解説しています。
VBAからPythonに移行するメリット
VBAからPythonへ移行するメリットを整理してみましょう。
Excel以外にも使える
PythonはExcel専用ではありません。
Excel、CSV、画像、Web、APIなど、さまざまな処理を一つのプログラミング言語で扱えます。
Pythonのライブラリを利用できる
Pythonには非常に多くのライブラリがあります。
Excelを操作するopenpyxlだけでなく、データ分析、画像処理、Web、AIなど、目的に応じたライブラリを利用できます。
AIやデータ分析と組み合わせやすい
PythonはAIやデータ分析の分野でも広く利用されています。
そのため、
Excelデータ
↓
Python
↓
データ分析
↓
AIによる処理
といった発展的な使い方にもつなげられます。
Excelを超えた業務自動化につなげやすい
VBAではExcelを中心とした自動化が得意ですが、PythonではExcelを一つの部品として扱うことができます。
例えば、
ファイルを取得
↓
Pythonでデータ処理
↓
Excelへ出力
↓
別のシステムへデータ送信
といった処理も可能です。
「Excel作業を自動化する」というところから、「業務そのものを自動化する」という方向へ発展させやすいのがPythonの特徴です。
VBAからPythonに移行するデメリット
一方で、Pythonにもデメリットがあります。
Pythonのインストールが必要
VBAはExcelに組み込まれているため、基本的にはExcelがあれば利用できます。
一方、Pythonを使う場合はPython本体や必要なライブラリをインストールする必要があります。
初心者にとっては、最初の環境構築が少し難しく感じられるかもしれません。
ExcelだけならVBAのほうが簡単な場合がある
Excelのセルやシートを少し操作するだけなら、VBAのほうが手軽な場合があります。
例えば、
「ボタンをクリックしたらExcelの表を更新する」
といったExcel内で完結する処理なら、VBAは非常に便利です。
Excel特有の機能ではVBAが便利なこともある
Excelには、VBAと組み合わせて利用することを前提とした機能もあります。
そのため、PythonですべてのExcel操作を置き換えようとする必要はありません。
重要なのは、
「VBAをPythonに置き換える」
ことではなく、
「目的に応じて適切なツールを選ぶ」
ことです。
VBAとPythonはどちらを使えばいい?
VBAとPythonのどちらを使うべきかは、作業内容によって変わります。
| 作業内容 | VBA | Python |
|---|---|---|
| Excelのセル操作 | ◎ | ◎ |
| Excel内の簡単な自動化 | ◎ | ○ |
| Excelマクロ | ◎ | △ |
| Excelファイルの読み書き | ◎ | ◎ |
| CSV処理 | ○ | ◎ |
| 大量データの処理 | ○ | ◎ |
| データ分析 | ○ | ◎ |
| 画像処理 | △ | ◎ |
| Webとの連携 | △ | ◎ |
| APIとの連携 | △ | ◎ |
| AIとの連携 | △ | ◎ |
| Excel以外の自動化 | △ | ◎ |
| 環境構築の手軽さ | ◎ | ○ |
あくまで目安ですが、
Excelの中だけで完結する作業ならVBA、Excel以外も含めて幅広く自動化したいならPython
と考えると分かりやすいでしょう。
VBA経験者がPythonを学ぶなら何から始めればいい?
VBAを使ったことがある人なら、プログラミングの基本的な考え方はすでに理解しているかもしれません。
Pythonを学ぶ場合は、最初から難しい内容に進む必要はありません。
次のような順番がおすすめです。
1.Pythonの基本文法を学ぶ
まずは、
- 変数
- if文
- for文
- 関数
- リスト
- 辞書
などを学びます。
2.ファイル操作を覚える
次に、Pythonからファイルやフォルダを扱えるようにします。
例えば、
- ファイルを検索する
- ファイル名を変更する
- ファイルを移動する
- フォルダを作成する
といった処理です。
3.openpyxlを覚える
Excel自動化を目的とするなら、openpyxlを使ってExcelファイルを操作してみましょう。
まずは、
Excelを読み込む
↓
セルを読み込む
↓
セルに書き込む
↓
Excelを保存する
という基本操作から始めます。
4.pandasを覚える
ExcelやCSVのデータを大量に処理する場合は、pandasも便利です。
特に、
- データの抽出
- 並べ替え
- 集計
- 加工
- データ分析
などを行う場合に役立ちます。
5.Excel以外の自動化にも挑戦する
Pythonに慣れてきたら、
- CSV
- 画像
- Web
- API
- AI
などにも挑戦してみましょう。
そうすると、Pythonを「Excelを操作するためのVBAの代わり」としてだけではなく、さまざまな業務を自動化するための道具として使えるようになります。
PythonはVBAの完全な代わりではない
ここまで読むと、「それならVBAをやめてPythonだけ使えばいいのでは?」と思うかもしれません。
しかし、必ずしもそうとは限りません。
VBAにはVBAのメリットがあります。
特にExcelの中で完結する作業では、VBAが非常に便利です。
一方、PythonはExcel以外の処理まで含めて自動化したい場合に強みがあります。
そのため、
Excel中心の作業
↓
VBA
Excel+CSV+Web+画像+AIなど
↓
Python
というように使い分けるのも一つの方法です。
また、VBAとPythonを組み合わせて利用することもできます。
「VBAかPythonか」という二択ではなく、それぞれの得意分野を活かすという考え方も重要です。
まとめ
Pythonを使えば、VBAで行っていた多くのExcel作業を自動化できます。
特にPythonには、
- Excel
- CSV
- データ分析
- 画像処理
- Web
- API
- AI
など、Excel以外の処理にも利用できるというメリットがあります。
一方で、Excelだけで完結する簡単な処理では、VBAのほうが手軽な場合もあります。
そのため、VBAを完全にPythonへ置き換える必要はありません。
Excel中心ならVBA、Excelを含めて幅広い業務を自動化するならPython
というように、目的に応じて使い分けるとよいでしょう。
VBAを使った経験がある人にとって、PythonはExcel自動化の次のステップとして学びやすい選択肢です。
まずはopenpyxlを使って、普段Excelで繰り返している作業を一つPythonで自動化してみるところから始めてみましょう。
