.net column

.NET開発者のためのブログメディア

PythonでのExcelの操作方法4つ|マクロ作成で使えるパッケージも紹介

 
PythonでのExcelの操作方法4つ|マクロ作成で使えるパッケージも紹介

SE
PythonでExcelを扱うメリットについて、教えてください。

PM
そうですね。大量のデータを分析する際にはPythonを利用すれば短時間で処理できます。

PythonでExcelを操作する2つの方法とは?

ここではPythonでExcelを操作するための2つのライブラリについて説明します。xlsxのファイルを直接編集するものとExcelをWin32 APIを通して扱うものです。

様々なライブラリが存在しますが、openpyxlとpywin32に焦点をあてて説明します。

openpyxlの特徴

Excelのxlsx/xlsm/xltx/xltm(Office Open XML)形式のファイルを操作するためのライブラリです。xlsx/xlsm/xltx/xltm形式のファイルを直接操作するため、Excel本体が無い場合でも作成したアプリケーションが実行可能です。

pywin32の特徴

Win32 API経由でExcelを操作するためのライブラリです。PythonからExcel本体を操作するためExcel本体が必須となります。

Access-VBAからExcelを操作するプログラムの作成経験がある方には、Excelを操作しているコードはそれほど違和感がないかもしれません。

PythonでのExcelの操作方法4つ

今回は、Pythonからopenpyxlを使用したExcelの扱い方について説明します。ここでは、ワークブック、ワークシート、セル、グラフについて紹介します。

PythonでExcelを扱うには事前にopenpyxlをインストールしてください。

1:ワークブック

Pythonでのワークブックの扱い方について紹介します。

実際のソースコードを見てみましょう。

実行すると、カレントディレクトリに「python.xlsx」という名前のExcelファイルが作成されます。Excelで開いて確認してみてください。

実行すると、カレントディレクトリに「python2.xlsx」という名前のExcelファイルが作成されます。

2:ワークシート

PythonでのExcelのワークシートの扱い方について紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

3:セル

PythonでのExcelのセルの扱い方について紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

数式の「計算結果」を取得したい場合は、load_workbookの引数に「data_only=True」を指定してください。ただし、計算はExcelが行うため、事前にエクセルで開いておかなければ「計算結果」は取得できません。

4:グラフ

PythonでのExcelのグラフの扱い方について紹介します。

実際のソースコードを見てみましょう。

保存したExcelを開くと、Pythonで作成したグラフが表示されていることが分かります。

Pythonではマクロの作成も可能

VBAからPythonのコードを記述した.pyファイルを実行することができます。

たとえば外部パッケージのxlwingsを導入することにより、ボタンのマクロの登録メニューからPythonのプログラムを呼び出したり、ユーザー定義関数 (UDF)を作成してワークシート関数として使用したりすることもできます。

Pythonでマクロを作成するメリット3つ

Pythonでマクロを作成することには以下のメリットがあります。

・Pythonでの複雑な処理の必要がありません。
VBAとPython各々に適した機能を使用するように実装することができます。

・簡単な記述で作成できます。
Python用に公開されているライブラリを使用することにより、複雑な処理も容易に使用することができます。

・アプリケーションを超えた処理が可能です。
Pythonでそれぞれの処理に適した複数のアプリケーションを連携させることができます。

1:Pythonでの複雑な処理の必要がない

Pythonでマクロを作成することは可能ですが、全てをPython側で行う必要はありません。VBAにはVBAの得意な処理があり、各々が得意な分野の処理を実行するように切り分けて実装することができます。

2:簡単な記述で作成できる

外部アプリケーションを使用する場合、VBAでも操作するプログラムは公開されているAPIを使用することで可能ですが、Python用に公開されているライブラリも多く、また使用も容易です。

たとえば、PyAutoGUIの例で記述している

は内部でOpenCV(Open Source Computer Vision Library)を使用して画像認識を行っています。
VBAで同様の処理を行う場合は、VBAで使用可能なOpenCVを使用した画像認識用のDLLを作成し、それを使って画像認識のためのプログラムを作成する必要があります。

3:アプリケーションを超えた処理が可能である

先述のとおり、Python用のライブラリが公開されているアプリケーションは数多く存在します。Pythonから目的に応じたアプリケーションを組み合わせて使用できます。

Webスクレイピングを実行して、結果をデータベースに書き込むという処理もPythonのプログラムのみで実装できます。

Pythonでのマクロ作成に活用できるパッケージ4つ

Pythonでマクロ作成に活用できるパッケージとして、今回は以下の4つについて説明します。
・PyAutoGUI:PythonでGUI操作の自動化を行うためのパッケージです。

・CSV:PythonでCSVファイルの読み込みや書き込みを行うための標準ライブラリです。

・python-docx:PythonでWordのDocumentの処理を行う外部パッケージです。

・PDFMiner.six:PythonでPDFの処理を行う外部パッケージです。

それぞれ以下でインストールして下さい。

PyAutoGUIのサンプルを実行する場合、パッケージの追加を要求した場合、それに従って追加インストールしてください。

1:PyAutoGUI

PyAutoGUIとはMicrosoft Power Automate Desktopのようにマウスのクリックやキーボード入力などを自動化するためのPythonのパッケージです。

事前にExcelのWorksheet上のボタンの座標もしくは画像を取得しておき、Pythonのプログラムを実行すると、順次指定されたボタンを順次押下して処理を継続していくことができます。

Worksheet上のボタン1の画像のスクリーンショット[“btn.PNG”]の座標を取得してボタンを押下するためには以下の様に行います。

2:Python標準ライブラリ:CSV

CSVファイルの読み込みや書き込みを行うPythonの標準ライブラリです。CSVファイルの読み込みは以下の様に行います。

また、データを読み込んで分析を行う場合にはpandas.read_csvを使用することも可能です。

3:python-docx

PythonでWordのDocumentの処理を行う外部パッケージの一つです。Wordのファイルの読み込みは以下の様に行います。

4:PDFMiner.six

PythonでPDFの処理を行う外部パッケージの一つです。PDFのファイルを読み込んで含まれているテキストファイルの出力は以下の様に行います。

SE
マクロよりもPythonでの処理は、圧倒的に便利ですね。

PM
プログラミングの負担が大幅に軽減されるので、ほぼ自動での処理が可能です。

PythonでExcelを操作してみよう

Microsoft Office等を操作するプログラムはVBAのみでコードの記述が可能な部分もありますが、Pythonを併用することにより、より効率的なコードを記述することが可能です。

ここまで述べていたライブラリには、上記で説明した以外にも様々な機能があります。まずは評価してみてはいかがでしょうか。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags