
PythonでExcelの自動化ができる?

機械学習やAI関連で注目を浴びるプログラミング言語のPythonですが、その豊富なライブラリにはExcel自動化のライブラリがあります。
今やExcelは事務作業を行う上では必須のツールです。プログラミング言語が普及するまで、会議資料の作成、データの集計や分析に加え、従来はExcelマクロやVBAを利用して、業務の効率化を図るのが一般的でした。
その流れは変わらず、さまざまなシステムの開発と、システム化による業務の効率化と並行してExcel文化が定着し、アプリケーションとExcelが共存しているのが現状です。そんな中、Pythonを利用したExcelの自動化が注目されています。
ここでは、Pythonでできることとして、Excelの自動化についてご紹介します。
Excel操作の効率化
企業がExcelを導入した当時、Excelは一部の人のツールでした。あくまでも表計算がメインで、経営計画や会議のための資料作成に使われていましたが、Excelの便利さが伝わると、経理部門や人事部門もこぞってExcelを使うようになりました。
請求書の発行・売掛金の管理・人事情報の管理など、さまざまな局面でExcelが使われ、続いてExcelのマクロ機能やVBAを用いて、Excel操作の自動化も進みました。しかし、VBAにもできることに限界があります。
他システムとの連携・データベース操作・Webアプリとの連動など、VBAだけでは難しいことが数多く出現しましたが、定着したExcel文化を捨てることもできません。そうした限界を乗り越え、更なる業務の効率化を図る方法の1つとしてPython×Excelが注目をされているのです。
VBAとは
Excelは分かるがVBAは触ったことがないという方が多いでしょう。 VBAとは(Visual Basic for Applications)の略称で、Microsoft Officeのアプリ拡張機能です。
VBAはプログラム言語の1つですが、VBAを利用してExcelのみならずWord・Access・PowerPointなどのOffice製品でも利用できるのが特徴です。
Excelなどにはマクロ機能があり、マクロに操作を記録すると同じ操作を実行させることができますが、このマクロはVBAプログラムに変換され、マクロの裏ではVBAが動いているのです。
企業では、各部門の予算入力・集計・売上入力・集計・レポート作成などをExcelとVBAを利用して実現している例が数多くあり、ExcelとVBAは切っても切れない関係になっています。
Python×Excelによる最速仕事術
Pythonを使うと、VBAと同様にExcel関係の仕事を効率化することが可能です。
効率化できる作業や操作は多岐にわたりますが、分かりやすいところで言えば以下のような作業を自動化できます。
PythonをExcelと連携させると可能なこと。
・外部データのExcelへの読み込み ・読み込んだデータの集計や加工 ・処理した結果をデータベースなどへの書き込み ・処理結果をグラフ化 ・PythonでExcelの(VBA)マクロの実行 ・Excelのアウトプットの印刷設定
つまり、VBAで行えることはほぼ全てPythonで行えます。VBAでは難しいこともPythonでは容易に実現できるのです。また、これらのことはPythonでゼロからプログラミングする必要はありません。PythonにはExcel向けのライブラリが揃っているため、それらを利用すれば比較的簡単にExcel操作・Excel自動化が実現できます。
これらによって、眼に見えて仕事の効率化が図れるでしょう。これまで、Excelに長けた人しかできなかった業務が誰でもできるようになります。まさに、Python×Excelは最速仕事術となるのです。
PythonによるExcel操作のメリット

PythonでExcelの操作やExcel作業の自動化ができる事は分かりました。では、PythonによるExcel操作はどのようなメリットがあるのか見ていきましょう。
プラットフォームの制約が少ない
大きな企業では事務系はWindows、デザイナー系やDTM系ではMacというところも少なくありません。MacにもMac版のMicrosoft Officeがあるため、共通ソフトとしてExcelを使う分には特に問題はありませんが、Excel VBAに関しては非共通部分もあり、両方を同時にコントロールするのは無理があります。
Pythonであれば、Windows版とMac版に大きな違いはなく、簡単な修正だけですぐに同時に使えます。そのため、同一企業内でWindowsとMacが混在しているところでは、VBAよりはPythonを利用した方が管理しやすいでしょう。
Pythonは効率化できる幅が広い
PythonはVBAと比較して汎用性が高く、さまざまな連携が可能です。例えば、GoogleスプレッドシートのデータとExcelを連携させたり、Webからスクレイピング(収集)したデータをExcelに書き出したりすることが可能です。このように、Excel以外のアプリやデータベースとの連携が容易に行える点はメリットです。
使える関数が豊富
Pythonは元々科学技術計算に用いられるほど、計算は得意分野です。またExcel関数が使えるライブラリもあり、両者の良いとこ取りをし、相互に補完することで相乗効果を得られます。
将来性がある
求人サイトなどを検索してみると分かりますが、Pythonの求人に対して、VBAの求人は10分の1もありません。Excelは普及しても、VBAの需要はむしろ減っているのが現状です。
PythonはExcel操作が可能なだけではなく、Webアプリの開発・機械学習・AI開発・ゲーム開発などあらゆる分野で利用されています。
将来性という観点で、学ぶならVBAよりはPythonです。とはいえ、VBAからPythonへの移行案件をこなすには、VBAの解読ができた方が効率的に対応できます。VBAを学んでおいて損はありません。
PythonによるExcel操作のデメリット

PythonにはExcel操作やExcel自動化のライブラリがありますが、どのようなライブラリがあるのでしょうか。主なライブラリの概要を見ていきましょう。
Pythonのインストールが必要
PythonはMicroSoft Officeのように、最初から業務用PCにはインストールされていません。しかも、企業であればインストールするためには、システム部門の承諾が必要でしょう。この壁が大きなネックです。
非定型業務、非日常業務には向かない
Excelでも自動化が容易な反復作業や定型業務は、Pythonで対応が可能です。しかし、非定型業務は対応ができません。また、年に1度程度の非日常業務も、費用対効果の観点から考えると、わざわざPythonで自動化する必要性は低いでしょう。
とはいえ、非日常業務や非定型業務などを放置すると、そこが業務効率化の足かせになる可能性があります。
非日常業務や非定型業務の棚卸を行い、自動化するのか・廃止するのかについて判断する必要があります。また、非日常業務や非定型業務でも重要かつ必要な業務であれば、AI技術によって対応することが可能であり、それも選択肢となります。 このように自動化においては、業務を1つずつ、丁寧に見直しをしていくことが求められます。
Excel操作系のPythonライブラリ

Pythonの標準ライブラリには、素晴らしいパッケージやモジュールが豊富にあります。その中にはExcel操作に関するライブラリがありますので、利用しない手はありません。Excel系には次のようなライブラリあります。
OpenPyXL
「OpenPyXL」は、主にExcel(拡張子が.xlsxのフアイル)の読み書きを行うパッケージです。
例えば、
・Excel上のセルの値をPythonで読んだり、書いたりする ・異なるExcelのファイル間で、Excel内部のデータを交換する ・グラフを自動作成する
といったことができます。
xlwings
Pythonでよく利用されるExcel系ライブラリとしては「xlwings」があります。Pythonから直接Excelを呼び出すことができます。また、逆にExcelからPythonを呼び出すことも可能です。 他に特徴としては、
・VBAに書き方が似ている ・既存のExcelマクロを使える
といった点があり、VBAユーザーには馴染みやすいパッケージです。
Python×エクセルのおすすめ本

PythonとExcelをうまく使うと、Excelの関わる業務を大きく改善できそうなことが分かりました。では、「Python×Excel」に関して、どう学ぶべきか気になるところでしょう。
ネット上には、「Python×Excel」に関する情報が豊富にありますが、体系的に学びたいなら、入門書で学ぶのが間違いないでしょう。ここでは「Python×Excel」に関するおすすめの入門書を2冊紹介します。
めんどうな作業が秒速で終わる!Excel×Python自動化の超基本
『めんどうな作業が秒速で終わる!Excel×Python自動化の超基本』は、Pythonのことはよく分からないけど、Excelの自動化をしたい・実践を通じてPythonを学んでみたいという人におすすめです。
PythonによるExcelの操作、自動化と聞くと、Pythonに関するプログラミングのスキルが必要だと思いがちですが、この本は「超基本サンプル」を中心に例が多く載せられています。
Pythonを知らなくとも簡単に学べ、「超基本サンプル」のコードをそのまま打ち込み、指示通りに幾つかの操作をすればExcelの自動化ができてしまうという優れものです。
できる仕事がはかどるPython & Excel自動処理全部入り。 めんどうなコピペや手作業とオサラバしよう!
『できる仕事がはかどるPython & Excel自動処理全部入り。 めんどうなコピペや手作業とオサラバしよう!』は、2冊目としておすすめしたい本です。サンプルプログラムが身近な業務を想定して豊富に用意されており、サンプルを少しアレンジするだけで、Excel操作でやりたいことの大半がこの1冊で実現できてしまうでしょう。
Python×Excelの将来性

確かにExcelは業務効率化に大きな役割を果たしてきましたが、そろそろ限界に達しつつあります。とはいえ、企業の情報資産としてExcelは重要な位置づけにあるため、Excelを捨てることがでません。このExcelを活かしながら、さらに業務の効率化を図る手段として、PythonによるExcel操作・Excel自動化があります。
既存のExcelで作成された資料などをPythonを用いて、データベースに移行するといった作業も必要でしょう。ExcelマクロやVBAに頼っていた業務も、Pythonに移行することで更なる効率化が期待できます。派手さはありませんが、こうした地道な対応もDX実現には必要不可欠です。
Pythonエンジニアを目指す皆さんは、PythonによるExcel操作、自動化を学び、Pythonエンジニアとしてスキルアップを図ってみませんか。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから