Pythonでエクセルの自動化ができる?
機械学習やAI関連で注目を浴びるプログラミング言語のPythonですが、その豊富なライブラリにはエクセル自動化のライブラリがあります。
今やエクセルは事務作業を行う上では必須のツールです。プログラミング言語が普及するまで、会議資料の作成、データの集計や分析に加え、従来はエクセルマクロやVBAを利用して、業務の効率化を図るのが一般的でした。
その流れは変わらず、さまざまなシステムの開発と、システム化による業務の効率化と並行してエクセル文化が定着し、アプリケーションとエクセルが共存しているのが現状です。そんな中、Pythonを利用したエクセルの自動化が注目されています。
ここでは、Pythonでできることとして、エクセルの自動化について紹介します。
エクセル操作の効率化
企業がエクセルを導入した当時、エクセルは一部の人のツールでした。あくまでも表計算がメインで、経営計画や会議のための資料作成に使われていましたが、エクセルの便利さが伝わると、経理部門や人事部門もこぞってエクセルを使うようになりました。
請求書の発行・売掛金の管理・人事情報の管理など、さまざまな局面でエクセルが使われ、続いてエクセルのマクロ機能やVBAを用いて、エクセル操作の自動化も進みました。しかし、VBAにもできることに限界があります。
他システムとの連携・データベース操作・Webアプリとの連動など、VBAだけでは難しいことが数多く出現しましたが、定着したエクセル文化を捨てることもできません。そうした限界を乗り越え、更なる業務の効率化を図る方法の1つとしてPython×Excelが注目をされているのです。
VBAとは
エクセルは分かるけれど、VBAは触ったことがないという方も多いでしょう。VBAとは(Visual Basic for Applications)の略称で、Microsoft Officeのアプリ拡張機能です。
VBAはプログラム言語の1つですが、VBAを利用してエクセルのみならず、Word・Access・PowerPointなどのOffice製品でも利用できるのが特徴です。
エクセルなどにはマクロ機能があり、マクロに操作を記録すると同じ操作を実行させることができますが、このマクロはVBAプログラムに変換され、マクロの裏ではVBAが動いているのです。
企業では、各部門の予算入力・集計・売上入力・集計・レポート作成などをエクセルとVBAを利用して実現している例が数多くあり、エクセルとVBAは切っても切れない関係になっています。
Python×エクセルによる最速仕事術
Pythonを使うと、VBAと同様にエクセル関係の仕事を効率化することが可能です。
効率化できる作業や操作は多岐にわたりますが、分かりやすいところでは以下のような作業を自動化できます。
【Pythonをエクセルと連携させてできること】
- 外部データのエクセルへの読み込み
- 読み込んだデータの集計や加工
- 処理した結果をデータベースなどへの書き込み
- 処理結果をグラフ化
- Pythonでエクセルの(VBA)マクロの実行
- エクセルのアウトプットの印刷設定
つまり、VBAで行えることはほぼ全てPythonで行えます。VBAでは難しいこともPythonでは容易に実現できます。また、これらのことはPythonでゼロからプログラミングする必要はありません。Pythonにはエクセル向けのライブラリが揃っているため、それらを利用すれば比較的簡単にエクセル操作・自動化が実現できます。
これらによって、眼に見えて仕事の効率化が図れるでしょう。これまで、エクセルに長けた人しかできなかった業務が誰でもできるようになります。まさに、Python×Excelは最速の仕事術となるのです。
Pythonによるエクセル操作のメリット
Pythonでエクセルの操作や、エクセル作業の自動化ができることは分かりました。では、Pythonによるエクセル操作はどのようなメリットがあるのか見ていきましょう。
プラットフォームの制約が少ない
大きな企業では事務系はWindows、デザイナー系やDTM系ではMacというところも少なくありません。MacにもMac版のMicrosoft Officeがあるため、共通ソフトとしてエクセルを使う分には特に問題はありませんが、エクセル VBAに関しては非共通部分もあり、両方を同時にコントロールするのは無理があります。
Pythonであれば、Windows版とMac版に大きな違いはなく、簡単な修正だけですぐに同時に使えます。そのため、同一企業内でWindowsとMacが混在しているところでは、VBAよりはPythonを利用した方が管理しやすいでしょう。
Pythonは効率化できる幅が広い
PythonはVBAと比較して汎用性が高く、さまざまな連携が可能です。例えば、Googleスプレッドシートのデータとエクセルを連携させたり、Webからスクレイピング(収集)したデータをエクセルに書き出したりすることが可能です。このように、エクセル以外のアプリやデータベースとの連携が容易に行える点はメリットです。
使える関数が豊富
Pythonは元々科学技術計算に用いられるほど、計算は得意分野です。またエクセル関数が使えるライブラリもあり、両者の良いとこ取りをし、相互に補完することで相乗効果を得られます。
将来性がある
Pythonはエクセル操作が可能なだけではなく、Webアプリの開発・機械学習・AI開発・ゲーム開発などあらゆる分野で利用されています。
将来性という観点でも、プログラミングの学習においてPythonはおすすめの言語です。その際、VBAからPythonへの移行案件をこなすには、VBAの解読ができた方が効率的に対応できるため、PythonとVBAの両方を学んでおいて損はありません。
Pythonによるエクセル操作のデメリット
ここまで、Pythonにおけるエクセル操作のメリットを紹介しました。ここでは、デメリットとなるポイントについて解説します。
Pythonのインストールが必要
PythonはMicroSoft Officeのように、最初から業務用PCにはインストールされていません。しかも、企業であればインストールするためには、システム部門の承諾が必要でしょう。この壁が大きなネックです。
非定型業務、非日常業務には向かない
エクセルでも自動化が容易な反復作業や定型業務は、Pythonで対応が可能です。しかし、非定型業務は対応できません。また、年に1度程度の非日常業務も、費用対効果の観点から考えると、わざわざPythonで自動化する必要性は低いでしょう。
とはいえ、非日常業務や非定型業務などを放置すると、そこが業務効率化の足かせになる可能性があります。
非日常業務や非定型業務の棚卸を行い、自動化するのか・廃止するのかについて判断する必要があります。また、非日常業務や非定型業務でも重要かつ必要な業務であれば、AI技術によって対応することが可能であり、それも選択肢となります。
このように自動化においては、業務を1つずつ、丁寧に見直しをしていくことが求められます。
エクセル操作系のPythonライブラリ
Pythonの標準ライブラリには、素晴らしいパッケージやモジュールが豊富にあります。その中にはエクセル操作に関するライブラリがありますので、利用しない手はありません。エクセル系には次のようなライブラリがあります。
OpenPyXL
「OpenPyXL」は、主にエクセル(拡張子が.xlsxのファイル)の読み書きを行うパッケージです。
例えば、以下のようなことができます。
- エクセル上のセルの値をPythonで読んだり、書いたりする
- 異なるエクセルのファイル間で、エクセル内部のデータを交換する
- グラフを自動作成する
xlwings
Pythonでよく利用されるエクセル系ライブラリとしては、「xlwings」があります。Pythonから直接エクセルを呼び出すことができます。また、反対にエクセルからPythonを呼び出すことも可能です。
他にも以下のような特徴があり、VBAユーザには馴染みやすいパッケージであることが分かります。
- VBAに書き方が似ている
- 既存のエクセルマクロを使える
2023年8月公表の「Python in Excel」とは
前述したライブラリの他にも、2023年8月にパブリックプレビュー版が公表された「Python in Excel」でもPythonにおけるエクセルの操作が可能です。ここでは、Python in Excelについて概要や導入方法を紹介します。
Python in Excelの概要
Python in Excelでは、エクセル単一シート上でエクセルとPythonをシームレスに組み合わせることが可能になるため、これまでエクセルが苦手としていた高度なデータ処理や分析、可視化もPythonと組み合わせて効率的に行うことができます。Pythonの持つ機械学習や予測分析をエクセルでも活用できます。
Python in Excelを利用するには、「Microsoft 365 Insider Program」に参加してベータチャネルのInsiderレベルを選択します。なお、Python in ExcelはWindowsのみに対応しており、MacやWeb、iPhone、iPad、Androidでは使用できません。
また、Python in Excelは現在パブリックプレビュー版が公開されているため(2024年1月時点)、フィードバックに基づいて変更される場合があるようです。詳細はMicrosoftの公式サイトをチェックしましょう。
【参考】:Excel のオープンソース ライブラリと Python - Microsoft サポート
Python in Excelの導入方法
Python in Excelを利用するには、まずは「Python in Excel」のInsiderビルドをインストールしてセットアップを完了させます。
ExcelでPythonを使うには、Excelのセルに”=PY”と入力すると、関数オートコンプリート メニューから「PY」を選択できます。もしくは、関数に”=PY()”とカッコを追加することで直接記述も可能です。セルでPythonが有効になると、そのセルに緑の「PY」アイコンが表示されてPythonが入力できることが確認できます。
また、Python in Excelのインストールが完了すると、Anacondaによって提供される標準のPythonライブラリセットが搭載されます。コアライブラリは、matplotlib、numpy、pandas、seaborn、statsmodelsです。
Python×エクセルのおすすめ本
Pythonとエクセルをうまく使うと、エクセルに関わる業務を大きく改善できそうなことが分かりました。では、「Python×エクセル」に関して、どう学ぶべきか気になるところでしょう。
ネット上には、「Python×エクセル」に関する情報が豊富にありますが、体系的に学びたいなら、入門書で学ぶのが間違いないでしょう。ここでは「Python×エクセル」に関するおすすめの入門書を2冊紹介します。
めんどうな作業が秒速で終わる!Excel×Python自動化の超基本
本書は、Pythonのことはよく分からないけど、エクセルの自動化をしたい・実践を通じてPythonを学んでみたい人におすすめです。
Pythonによるエクセルの操作、自動化と聞くと、Pythonに関するプログラミングのスキルが必要だと思いがちですが、この本は「超基本サンプル」を中心に例が多く載せられています。
Pythonを知らなくとも簡単に学べ、「超基本サンプル」のコードをそのまま打ち込み、指示通りにいくつかの操作をすればエクセルの自動化ができます。
▪著者:伊沢 剛 ▪ページ数:224ページ ▪出版社:宝島社 ▪発売日:2020/08/19
【参考】:めんどうな作業が秒速で終わる!Excel×Python自動化の超基本
Python×Excelで作る かんたん自動化ツール
本書は、Pythonの基礎知識をはじめ、エクセルと組み合わせて仕事で使える自動化ツールを作成する方法を学べます。
本書を読み解いていくことで、Excelを使った入力・設定方法や、Pythonがインストールされていない環境でのプログラム実行方法、エラーメッセージの書き方などが理解できるようになります。
▪著者:リブロワークス ▪ページ数:216ページ ▪出版社:日経BP ▪発売日:2022/06/27
【参考】:Python×Excelで作る かんたん自動化ツール
Python×エクセルの将来性
エクセルを活かしながらさらに業務の効率化を図る手段として、Pythonによるエクセル操作・エクセル自動化があります。
既存のエクセルで作成された資料などをPythonを用いて、データベースに移行するといった作業も必要でしょう。エクセルマクロやVBAに頼っていた業務も、Pythonに移行することで更なる効率化が期待できます。こうした地道な対応もDX実現には必要不可欠です。
Pythonエンジニアを目指す皆さんは、Pythonによるエクセル操作、自動化を学び、Pythonエンジニアとしてスキルアップを図ってみませんか。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから