.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Python
  5. PythonでのExcelの操作方法4つ|マクロ作成で使えるパッケージも紹介

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

  • Python
  • プログラミング言語
公開日時:   更新日時:
PythonでのExcelの操作方法4つ|マクロ作成で使えるパッケージも紹介
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    システム
    エンジニア
    PythonでExcelを扱うメリットについて、教えてください。

    プロジェクト
    マネージャー
    そうですね。大量のデータを分析する際には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のファイルを読み込んで含まれているテキストファイルの出力は以下の様に行います。

    システム
    エンジニア
    マクロよりもPythonでの処理は、圧倒的に便利ですね。

    プロジェクト
    マネージャー
    プログラミングの負担が大幅に軽減されるので、ほぼ自動での処理が可能です。

    PythonでExcelを操作してみよう

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

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

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job