パソコン作業が当たり前になった現代では、多くのビジネスシーンや大学の授業の課題などでExcelを使うことがありますよね。データ集計やグラフ作成などさまざまな作業がExcelでできますが、実はPythonを活用することで自動化が見込めます。
厳密にいうとExcelにはマクロという簡易的なプログラミング機能が備わっており、ある程度の自動化は可能でした。しかし、マクロは高度な処理における動作の遅さや互換性の問題でいくつか課題があり、場合によっては使い勝手が悪いことも。
このようなマクロにおけるさまざまな問題点を解決するひとつの方法が、ExcelをPythonで操作するということです。ぜひ、Pythonを活用して作業を効率化させましょう。そこで今回は、ExcelをPythonで操作することで作業を自動化し、効率化する方法についてお伝えします。まずはPythonとは、について解説します。
Pythonとは
Pythonとは数あるプログラミング言語のひとつ。レバテック株式会社によるIT関係の求人の2018年の調査及び2019年に出された集計結果・考察によれば、正社員の求人ではJava、PHPに次いで第3位に求人が多いプログラミング言語にランクインしました。すなわち、Pythonは現在人気のあるプログラミング言語のひとつといえるでしょう。
Pythonの特徴は、コードの記述がわかりやすく簡単であること。このため保守性が高く、初心者でも扱いやすいでしょう。また、OSやExcelのバージョンにとらわれないことも利点です。これらのメリットはExcel操作をPythonでおこなううえでも強みになるに違いありません。
Pythonの特徴や強みについて確認したところで、どのようなExcel操作がPythonで可能となるのか解説します。
PythonでExcelを使うとできること
ExcelをPythonで扱うと多様な処理が自動化可能となり、作業の効率化へとつながります。Pythonを導入することでできることはたくさんありますが、例えばExcelへの入力の自動化やPDF化が可能です。
Excelは数値や文字を入力して集計したり、表やグラフ、文書を作成したりするために使われることが多いですよね。そのためデータ入力はExcelの基本操作といっても過言ではなく、かつもっとも手間がかかり、多くの人の手を煩わせる作業のひとつといえます。しかし、ExcelとPythonを組み合わせれば、煩雑な作業がぐっと簡略化され、全体的な効率が上がること間違いありません。
続いて、Excelへの入力やPDF化をPythonでおこなう方法について解説しましょう。まずは前段階としてOpenpyxlのインストールについてです。
PythonのOpenpyxlのインストール方法
OpenpyxlとはExcel(正確には.xlsxファイル)を操作するために必要なPythonのモジュール(装備、部品)の一種のことです。Pythonをデバイス上で使えるようにしたら、まずはOpenpyxlをインストールする必要があります。
OpenpyxlのダウンロードにはPythonをインストールした際に入るpipというツールを使うのが定番です。使う、といってもなにか新しいことを勉強したり、検索したりする必要はなく、例えばWindowsではコマンドプロンプトに代表されるコマンドラインツール上でおこないます。インストール自体は非常に簡単で、以下のコマンドをコマンドラインツールに入力するだけ。
とくに問題がなければ、すぐに自動的にインストールが進行し、少し待てば完了します。インストーラー経由でのインストールに慣れている人はコマンドラインツールでのインストールに少々困惑するでしょうが、難しい点や問題点も生じずにインストールできるので安心してください。
Openpyxlのインストールが終わったら、いざExcelをPythonで自動化しましょう。まずは、Excelへのデータ入力についてです。
PythonでExcelの入力を自動化する方法
Excelへの入力の自動化をするに当たって、まずはPythonでどのようにExcelファイルに数値や文字を入力するのか確認する必要があります。Excelファイルへの入力の流れを日本語で簡単に表すと、次のようになります。
- ファイル名や絶対パスを指定し、入力対象であるExcelファイルを取得する
- 取得したExcelファイルのシート名を指定し、シートを取得する
- 取得したシートのセルの位置を指定し、セルを取得する
- 取得したセルに任意の値を入れる
いくつか書き方はありますが、Pythonの構文の例は以下の通りです。
ブックの変数 = openpyxl.Workbook(ファイル名)
シートの変数 = ブックの変数[シート名] シートの変数[セル記号] = 書き込む値
シートの変数.cell(row=行,column=列).value = 書き込む値(引用:Python Excelのセルに書き込む、一部改変)
以上がExcelファイルに入力する方法になります。このとき、用意したテンプレートを読み込んで新たなファイルを作成し、そこに書き込むようにプログラムを組むと、作ったプログラムを実行するだけで、自動的に数値や文字の入力された入力ファイルの作成が可能です。例えば、請求書や納品書など、ある程度型が決まっている書類の作成に非常に便利ですよね。
次はExcelのPDF化する方法についてです。
PythonでExcelをPDF化する方法
ExcelをPDF化する仕組みをPythonで作るには、pywin32というライブラリ(便利なプログラムを集めたもの)をインストールし、win32comというモジュールを使うのが便利です。pywin32のインストールはOpenpyxlとほぼ同様で、以下のコマンドをコマンドラインツールに入力するだけ。
pywin32をインストールしたら、実際にExcelをPythonでPDF化します。日本語で手順を説明すると次の通りです。
- PDF化したいExcelファイルを開く
- PDF化したいExcelファイルやExcelファイル内のシートを選択する
- Excelファイルやシートを、新たなファイルとしてPDF形式で作成・保存する
いくつか書き方はありますが、シートをPDF化するプログラムのPythonの構文の例は以下の通りです。なお、変数“excel”と“file”は任意の名前で問題ありません。
import openpyxl
import win32com.client
excel = win32com.client.Dispatch(“Excel.Application”)
file = excel.Workbooks.Open(拡張子.xlsx含むPDF化したいExcelファイルの絶対パス)
file.WorkSheets(PDF化したいシートのインデックス).Select()
file.ActiveSheet.ExportAsFixedFormat(0,拡張子.pdf含む保存先の絶対パス)
以上がExcelファイルをPDF化する方法になります。もし複数のシートをPDF化したい場合は、シートのインデックスとして任意の値を入れたリスト型の変数を使うことで実現できます。また、ファイル全体をPDF化したい場合は先ほどのコードの最後の2文を以下の1文に書き換えましょう。
最後に、Excelへの入力の自動化やPDF化以外にPythonでできることを紹介します。
その他PythonでExcelでできる操作
これまで解説したExcelへの自動入力やPDF化の他にもPythonによって面倒な作業が自動化できたり、大量に処理できたりすることが可能です。ここでは以下の5つを紹介します。
シートの削除
ファイル中のシート数や、削除したいシート数が少ない場合は自動化せずとも問題ないことが多いです。しかし、特定の特徴を持つシートのみ削除したい場合や、削除したいシート数が多い場合は、Pythonでプログラムを組むことで時間の節約になります。とくに、シートの削除と追加をおこなうなど、さまざまなプログラムと組み合わせることで、より効率的になるでしょう。
ファイルの結合
複数のファイルのデータをまとめ、ひとつの新たなファイルを生成します。ファイルの結合の処理にはpandasというモジュールを使います。散在しているExcelファイルが大量であるときに力を発揮します。
印刷設定
Pythonを使えば、Excelをどのような形式で印刷するのか設定できます。例えば印刷用紙の向きや印刷枚数、ページ数の印刷などです。印刷設定のプログラムを組んでおけば、印刷毎にいちいち手で設定する必要はなくなりますよね。
グラフ化
こちらもpandasを使う操作です。グラフ化はExcelの機能でもよく使われるもので、自動化することで時間短縮となったり、ミスを減らしたりすることにつながります。さらに、Excelでは面倒であったり、複雑になってしまったりするようなデータ解析も、Pythonを使えばより簡単に可能です。
画像挿入
資料作成のために少数の画像を挿入するだけなら簡単ですが、大量の画像が必要になることも少なくありません。Pythonを使うことで、例えば特定のファイル内にある大量の画像を、Excelに自動で挿入するプログラムを組めます。
さて、今回はExcelをPythonで操作することで作業を自動化し、効率化することについてお伝えしました。Excelは便利なツールであると同時に、同じ操作を何度もせまられることがしばしばありますよね。そこで、Pythonを用いて同じ操作を自動化することで、Excelでの操作にかかる時間が短縮され、結果的に作業の効率化につながります。
今回主に解説したのは、入力の自動化とPDF化で、どちらも頻繁に使ったり、大量に扱ったりする機会の多い操作です。Openpyxlやpywin32をインストールすることで、簡単なコードで実行することが可能です。
ExcelとPythonを組み合わせてできることは、この2つだけではありません。シートの削除や、ファイルの結合、印刷設定、グラフ化、画像挿入など、普段「面倒だな・・・」と感じるようなExcelの操作もPythonで効率的におこなうことができます。
Excel×Pythonの世界は奥が深く、知れば知るほど作業が楽になります。今日からPythonを導入し、Excelでの作業の効率化をしましょう。