Excelの定型業務をもっと楽にできないか?と感じたことがある人も多いでしょう。
毎日繰り返すデータの入力や集計作業は、時間がかかるだけでなく、ミスも起こりがちです。
そんな悩みを解決できるのが、Pythonを使ったExcel操作の自動化です。
この記事では、「なぜExcel自動化にPythonが最適なのか」についてや、具体的な自動化の方法などを、サンプルコード付きで初心者にもわかりやすく解説します。
【本記事の信頼性】
- 執筆者は元エンジニア
- 大手プログラミングスクールのWebディレクター兼ライターを経験
- 自らも地元密着型のプログラミングスクールを運営
プログラミングスクール
■Webエンジニアの育成に特化 ■自社開発企業への転職成功率がダントツ ■ハイスキルを求める人に最適 |
|
■サポートは半永久的 ■単価80万円以上の講師陣 ■AWSやJavaに強い |
|
■受講料完全無料 ■最短1か月で卒業 ■教室への通学も可能 |
なぜVBAのマクロではなくPythonで自動化すべきなのか?
Excelの自動化といえば、VBAのマクロを思い浮かべる方も多いかもしれません。
しかし、近年ではPythonを選ぶ人が増えています。
その理由は、VBAにはない、以下のようなメリットがあるからです。
汎用性が高く用途が広い
PythonはExcel操作だけでなく、Webサイトからの情報収集(スクレイピング)や、データ分析、機械学習、AI開発など、非常に幅広い分野で活躍する言語です。
Excel業務を自動化するために学んだ知識を、他の様々な業務にも応用できます。
豊富なライブラリで高度な処理も簡単
Pythonには「ライブラリ」と呼ばれる、便利な機能がまとまった部品が世界中の開発者によって作られ、豊富に提供されています。
データ分析に特化したPandas
や、Excelファイルを直接操作できるOpenPyXL
などを使えば、VBAでは複雑になりがちな処理も、驚くほど短いコードで実現可能です。
OSに依存しない
VBAは基本的にWindows上のExcelでしか動作しません。
一方、PythonはWindows、Mac、Linuxなど、様々なOSで動作します。
そのため、異なる環境のチームメンバーとも協力しやすいメリットがあります。
PythonでExcelを自動化するための準備
PythonでExcelを自動化するためには、まず自分のパソコンでPythonを使えるようにし、Excel操作に必要な「ライブラリ」をインストールする必要があります。
Pythonのインストール
まだPythonをインストールしていない場合は、公式サイトからインストーラーをダウンロードしましょう。
-
Python公式サイトにアクセスします。
-
「Downloads」メニューから、OS(Windows, macOSなど)に合った最新版のインストーラーをダウンロードしてください。
-
ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを進めます。
その際、「Add Python to PATH」というチェックボックスがあれば、必ずチェックを入れてください。
これにチェックを入れると、コマンドプロンプトやターミナルからPythonを簡単に実行できるようになります。
ライブラリのインストール
PythonでExcelを操作するためには、専用のライブラリをインストールする必要があります。
特に、最も代表的な以下の2つのライブラリは必ずインストールしておきましょう。
- OpenPyXL: Excelファイル(.xlsx)の読み書きを直接行うためのライブラリ。セルの書式設定など、細かい操作も可能。
- Pandas: データ分析や操作に非常に強いライブラリ。Excelファイルを表形式のデータとして読み込み、集計や加工を簡単に行うことができる。
これらのライブラリは、コマンドプロンプト(Windows)やターミナル(Mac)で、以下のコマンドを実行するだけで簡単にインストールできます。
pip install openpyxl pandas
pip
はPythonのパッケージ管理ツールで、Pythonをインストールすると一緒に使えるようになります。
上記のコマンドを1行実行するだけで、2つのライブラリがまとめてインストールされます。
PythonでExcel操作を自動化する具体的な方法
準備が整ったところで、早速Pythonを使ってExcelを操作する方法を見ていきましょう。
ここでは、代表的なライブラリOpenPyXL
とPandas
を使った基本的な操作を紹介します。
OpenPyXLを使った基本的な操作
OpenPyXL
は、セル単位での細かい操作が得意なライブラリです。
1. Excelファイルの新規作成と保存
まずは、新しいExcelファイルを作成し、簡単なテキストを書き込んで保存してみましょう。
import openpyxl
# 1. 新しいワークブック(Excelファイル)を作成
wb = openpyxl.Workbook()
# 2. アクティブなワークシートを選択
sheet = wb.active
sheet.title = "請求書"
# 3. セルA1に値を書き込む
sheet['A1'] = "株式会社ABC"
# 4. ファイルを保存
wb.save("sample.xlsx")
まず、import openpyxl
で、OpenPyXLライブラリを使えるようにします。
次に、openpyxl.Workbook()
で、新しいExcelファイル(ワークブック)を作成しています。
wb.active
で、最初に表示されているシート(ワークシート)を選択し、.title
でシート名を「請求書」に変更しました。
sheet['A1'] = "株式会社ABC"
のように、シート['セル番地']
という形で簡単にセルに値を書き込めます。
最後にwb.save("ファイル名.xlsx")
で、ここまでの作業内容をファイルとして保存します。
このコードを実行すると、コードが保存されたフォルダにsample.xlsx
というExcelファイルが作成され、A1セルに「株式会社ABC」と入力されているはずです。
2. 既存のExcelファイルを読み込む
次に、既存のExcelファイルを読み込んで、その内容を取得する方法です。
import openpyxl
# 既存のワークブックを読み込む
wb = openpyxl.load_workbook("sample.xlsx")
# シート名でワークシートを選択
sheet = wb["請求書"]
# セルB2の値を読み込んで表示
cell_value = sheet['B2'].value
print(f"B2セルの値: {cell_value}")
openpyxl.load_workbook("ファイル名.xlsx")
を使うことで、既存のExcelファイルを読み込むことができます。
シートの選択は、wb["シート名"]
のようにシート名を指定する方法が便利でしょう。
セルの値を取得するには、シート['セル番地'].value
と記述します。
'B2'
のセルに何も入力されていなければ、None
(何もない)という結果が返ってきます。
【応用】Pandasライブラリでデータを一括操作する
Pandas
を使うと、Excelの表データをまるごと効率的に扱うことができます。
複数のデータを一気に処理したい場合に非常に強力です。
1. データを作成してExcelファイルに書き込む
Pandasを使ってデータを作成し、それを一括でExcelファイルに出力してみましょう。
import pandas as pd
# 辞書形式でデータを作成
data = {
'商品名': ['りんご', 'みかん', 'ばなな'],
'価格': [120, 80, 100],
'個数': [15, 20, 30]
}
# データフレームを作成
df = pd.DataFrame(data)
# Excelファイルとして出力(インデックスは不要なためFalseに設定)
df.to_excel("sales_data.xlsx", sheet_name="売上", index=False)
import pandas as pd
は、「pandasライブラリを今後pd
という名前で使います」というお決まりの宣言です。
その後、Pythonの辞書({}
)を使って、表形式のデータを作成しました。
pd.DataFrame(data)
で、そのデータをPandasが扱えるDataFrame
(データフレーム)という形式に変換しています。
データフレームは、高機能なExcelの表のようなものだと考えてください。
最後にdf.to_excel("ファイル名", ...)
とするだけで、データフレームの内容がまるごとExcelファイルに出力されます。
index=False
は、Excelに出力する際に行番号(0, 1, 2…)を入れないための設定です。
2. Excelファイルを読み込んでデータを操作する
次に、Excelファイルからデータを読み込み、簡単な集計を行ってみましょう。
import pandas as pd
# Excelファイルを読み込んでデータフレームに変換
df = pd.read_excel("sales_data.xlsx", sheet_name="売上")
# 「売上金額」の列を計算して追加
df['売上金額'] = df['価格'] * df['個数']
# 合計金額を計算して表示
total_sales = df['売上金額'].sum()
print(f"合計売上金額: {total_sales}円")
# 結果を表示
print(df)
pd.read_excel("ファイル名")
で、Excelファイルのデータを一瞬でデータフレームとして読み込めます。
df['売上金額'] = df['価格'] * df['個数']
のように、列同士の計算も簡単に行え、新しい列として追加できます。
df['列名'].sum()
で、指定した列の合計値を簡単に計算できます。
平均値(mean()
)や最大値(max()
)なども同様に計算可能です。
実行結果は以下の通りです。
合計売上金額: 6400円
商品名 価格 個数 売上金額
0 りんご 120 15 1800
1 みかん 80 20 1600
2 ばなな 100 30 3000
このように、Pandasを使えば、データの読み込みから集計、加工までを数行のコードで実現できてしまいます。
Pythonによって自動化できるExcel操作の例
Pythonを使えば、日常の様々なExcel業務を自動化できます。
ここでは具体的な例をいくつか紹介します。
例1:請求書の自動作成
毎月発生する請求書作成業務は、自動化に最適です。
請求書のテンプレートとなるExcelファイルを用意しておき、別のファイルやデータベースにある顧客情報や請求金額をPythonで読み込み、テンプレートに自動で書き込んで毎月分の請求書を大量に生成することができます。
例2:複数ファイルからのデータ集計
各支店から送られてくる売上報告書(すべて同じフォーマットのExcelファイル)を一つにまとめる作業も自動化できます。
特定のフォルダ内にあるすべてのExcelファイルをPythonで順番に読み込み、データをPandasのデータフレームにどんどん追加していきます。
最後に、集計したデータフレームを一つの新しいExcelファイルに出力すれば、手作業でのコピー&ペーストはもう必要ありません。
例3:Webサイトの情報をExcelにまとめる
PythonはWebスクレイピングも得意です。
例えば、ECサイトから特定商品の価格情報を定期的に収集し、その結果を日付ごとにExcelファイルに記録していく、といったことが可能です。
これにより、価格の変動を自動で追いかける市場調査ツールなども作成できるでしょう。
PythonでExcelの自動化を行う際の注意点
非常に便利なPythonによるExcel自動化ですが、いくつか注意すべき点もあります。
ファイルパスの指定に注意する
プログラムからExcelファイルを読み書きする際には、そのファイルがどこにあるのかを正確に指定する「パス」の記述が重要です。
特に、プログラムの実行場所とExcelファイルの場所が違う場合は、「絶対パス」で指定するか、パスの指定方法を正しく理解しておく必要があります。
ファイルが見つからないというエラーの多くは、このパスの指定ミスが原因です。
エラー処理を組み込む
「処理対象のファイルが存在しなかった」「シート名が間違っていた」など、自動化の途中で予期せぬエラーが発生することがあります。
Pythonのtry-except
構文を使ってエラー処理をあらかじめ組み込んでおけば、エラーが発生してもプログラムが突然停止するのを防ぎ、原因を記録して次の処理へ進むといった柔軟な対応が可能です。
大量データを扱う場合はPandasを検討する
数十万行といった大量のデータを扱う場合、OpenPyXLでセルを一つずつ操作すると、処理に非常に時間がかかってしまうかもしれません。
一方、Pandasは大量のデータを高速に処理できるように最適化されています。
データ量が多い場合は、Pandasを使って一括で処理する方法を検討しましょう。
まとめ
以上、Pythonを使ってExcel業務を自動化する具体的な方法を、サンプルコードとともに解説しました。
VBAと比較して、Pythonは汎用性が高く、学習しやすいうえ、データ分析などの高度な処理も得意です。
OpenPyXL
やPandas
といった強力なライブラリを使えば、これまで手作業で行っていた面倒な定型業務を劇的に効率化できるでしょう。
なお、Pythonを体系的に学んだり、Pythonのスキルを高めたりするためには、プログラミングスクールを利用するのも有効です。
細かな疑問がすぐに解決するだけでなく、現役エンジニアが「質の高いポートフォリオ」を作成するための手助けをしてくれたり、エンジニア就職・転職のコツを教えてくれたりするなど、様々なメリットがありますので、独学に疲れた方は検討してみてはいかがでしょうか。
