Python学院
メールマガジンバックナンバー

vol.12

  • コツ・知識
  • メールマガジン

Python(openpyxl)でExcel操作を自動化するコツ
~マクロ(VBA)との違いとは?

今回のテーマは「Python(openpyxl)でExcel操作を自動化するコツ」です。

(約5分で読めます)

~~~~~~~~~目次~~~~~~~~~
1. Excel操作を自動化するメリット
2. PythonでExcel操作を自動化するために
3. PythonでExcel操作自動化を行うコツ
4. マクロ(VBA)ではなく、PythonでExcel操作の自動化をするメリット
5. 最後に
~~~~~~~~~~~~~~~~~~~~


1. Excel操作を自動化するメリット


多くの組織で、Excelを用いた定型・単純作業は数多く存在します。

Excel操作の自動化ができるようになると、主に以下のようなメリットがあります。

●作業時間の短縮
●人件費の削減
●ヒューマンエラーの削減


これはExcel操作の自動化に限らず、業務自動化を実現した際に得られる主なメリットです。
組織として、また個人として成果を出すために、深い「思考」が必要な業務に時間を使うことができるようになります。


2.PythonでExcel操作を自動化するために

Pythonでは、目的ごとに便利な機能がまとめられたライブラリを使い、簡単にプログラムを開発できます。

「openpyxl」というライブラリを使うことで、Excel操作の自動化を簡単に実現することができます。openpyxlはワークシートやセルの操作、グラフ作成など、Excelファイルを開いて行うあらゆる操作を自動化できます。


Excel操作の自動化を行うにあたり「マクロ(VBA)」がよく候補に挙がりますが、マクロ(VBA)でできることは、Pythonでも同じようにできます。

Excelでの作業は「セルの操作」を行うことが最も多いかと思います。
(例)セルに記入されている値の「取得」、セルに値を「書き込む」など

この「セルへのデータの読み書き」について、Pythonでは以下のようにコードを記述することができます。



ここでは詳しくは説明しませんが、各行ごとに以下のようなことが行われています。

--------------------------------------------------------------
●#1
「openpyxl」をプログラム内で使えるように、読み込み(インポート)

●#2~#3
読み込むファイル名、操作対象のシート名を用意

●#4~#5
指定のExcelファイルを読み込み、また操作対象のシートを取得

●#6
読み込んだExcelファイルの「A1」セルの値を「取得」

●#7
「#6」で取得した値を、「A2」セルに「書き込み」

●#8
ファイルの保存
--------------------------------------------------------------

実際のExcelシート状の動きは、以下のようになります。
プログラム実行前:


プログラム実行後:


上の説明で「PythonによるExcel操作自動化のプログラムのイメージ」を掴むことができたかと思います。
このように非常に短いコードで、簡単にセルの操作を行うことが可能です。


3.PythonでExcel操作自動化を行うコツ

PythonでExcel操作の自動化を行うには、押さえておくべき「コツ」が存在します。
この「コツ」を押さえておけば、業務で活かせる実用的なPythonのプログラムを非常に効率良く作成することができます。

(1)Excelのデータ構造

PythonでExcel操作を行うにあたり、この「Excelのデータ構造」をしっかりと理解しておく必要があります。

Excelのファイルは、以下のような構造で成り立っています。


あるセルに対して操作を行いたい場合、まずは「どのワークブック(ファイル)に対して操作を行うか」を指定する必要があります。

操作対象のワークブックを指定できたら、次に「ワークブック内の、どのワークシートに対して処理を行うか」を指定する必要があります。

操作対象のワークシートを指定できたら、「どのセルに対して操作を行うか」を指定し、操作対象のセルに対して「値の取得」や「値の書き込み」といった操作を行っていきます。

このように、Excelには「ワークブック(ファイル)>ワークシート>セル」といった階層構造が存在します。
セルに対して操作を行いたいときは、「どのワークブックの、どのワークシートの、どのセルに対して処理を行えば良いか」を意識することが重要です。


(2)ひな型ファイルの活用

openpyxlでExcelを用いた業務の自動化を行う際、多くの場面で「データ転記」を行います。
「データ転記」の中でも、「あるExcelファイルに記入されたデータを、別のExcelファイルに転記する」という操作を行うことが多いです。

例えば、顧客リストで管理されている顧客ごとに請求書を作成するといったことを行いたい場合に、「ひな型ファイル」と呼ばれるものを活用します。

「ひな型ファイル」とは、作成したいファイルに共通する部分をまとめたものです。
ひな型ファイルをあらかじめ用意することで、後からデータを流し込み、綺麗な形でファイルの作成を行うことができます。



 ビジネスの現場で作成する多くの書類は、あらかじめフォーマットが決まっているものが多いです。
ひな型ファイルを使うことで、非常に効率良く書類を自動作成できます。


(3)現場でよく活用されるExcelの自動操作について

Excelファイルを自動操作する場合、複数ファイルに対して処理を行うことが多くあります。
複数ファイルに対しての処理には、大きく以下2つの方向性があります。

●1→多
1つのファイルにまとめられている情報を元に、複数のファイルを作成します。
例えば、顧客リストで管理されている顧客ごとに請求書を作成するといった場面で、この処理が行われます。

●多→1
先程の「1→多」とは、方向性が逆です。複数のファイルに散らばった情報を、一つのファイルに集約します。
例えば、各営業拠点から提出を受けた売上管理ファイルを、全社集計用に一つのファイルに集約するといった場面で、この処理が行われます。

この「1→多」と「多→1」の方向性を理解ができていれば、簡単にプログラムを作成することができます。


4.マクロ(VBA)ではなく、PythonでExcel操作の自動化をするメリット

Excel操作の自動化を検討する際、よく「マクロ(VBA)」が候補として挙がります。

マクロ(VBA)はExcel操作の自動化に特化しており、最もよく使われているツールです。特にExcel操作の自動化「だけ」を実現したいのであれば、マクロ(VBA)のほうが手軽に始められるためオススメです。

非常に便利なマクロ(VBA)ですが、応用範囲が狭いというデメリットがあります。

他のOfficeソフト(Word、PowerPoint等)の操作自動化や、Web上からの情報収集の自動化、ブラウザの自動操作を行い業務を改善したい場合はプログラミング言語がオススメです。 特にPythonを使えるようになれば、データ分析やAI開発、アプリ開発などもできるようになり、業務改善やDX実現に近づきます。

組織の業務自動化を実現するために「とりあえず、環境構築が不要ですぐに扱えるマクロ(VBA)を導入しよう!」と考える方は多いです。
しかし「業務の自動化=Excel操作の自動化」となってしまい、「組織内のあらゆる業務の自動化」を実現することが難しくなってしまう場合があります。

一方Pythonは非常に応用範囲が広いため、「もしかしたら、この業務も自動化できるかも」という「自動化の案」がいたるところで出てくるようになります。 結果として、組織に「業務効率化」「改善」の風土を強く根付かせることができます。


5.最後に

この記事では、Excel操作の自動化を実現するための方法・コツ、マクロ(VBA)とPythonの違いを説明しました。

Pythonを使いこなせる人が組織内に増えれば、組織の業務効率化・改善に対する「意識」が変わります。
組織の「意識」が変わることで、実際に自動化を実現してみようと「実践」が生まれます。

「実践」を行っていく中で、組織内であらゆる業務を自動化するための「仕組み」が構築されるようになり、その仕組みの下で「実践し続けられる」ようになります。

もし「組織へのPythonの導入・活用」を検討している場合は、まずはPythonを用いた簡単なExcel操作の自動化を行うことから始めてみてください。
Pythonの有用性を、組織内に示す」ことで、組織の「意識を変える」第一歩にできたら幸いです。

関連研修