こんにちは!ゆーや(@yuyamanm118712)です。
Excelファイルには多くの種類がありますが、その中でも特に「.xlsm」ファイルはマクロ機能を含む特別な形式です。Pythonでこのようなファイルを操作するには、「openpyxl」や「xlwings」といったライブラリを使う方法が一般的です。
本記事では、それぞれのライブラリの特徴や使い方、そして使い分けについて説明します。
.xlsmファイルとは?
まず、「.xlsm」ファイルについて簡単に説明します。これはマクロが含まれるExcelファイルの形式で、通常の「.xlsx」との違いは、VBA(Visual Basic for Applications)というプログラミング言語で記述されたマクロが使える点です。このマクロを自動的に実行することで、Excel上で複雑な処理を簡単に行うことができます。
Pythonでこのファイル形式を操作するには、マクロの存在を意識したライブラリ選びが重要です。ここで、「openpyxl」と「xlwings」が有効な選択肢となります。
openpyxlでの操作
openpyxlは、PythonでExcelファイル(.xlsx形式)を操作するための最も一般的なライブラリの一つです。ただし、openpyxlには「マクロを実行する機能」がありません。そのため、.xlsmファイルを操作する場合、マクロを無視するか、マクロを含まないセルのデータ操作に限定されます。
もし、openpyxlをインストールしていない方は
次の記事を読めば、簡単にインストールできるよ!
基本的な使い方
以下は、openpyxlを使って.xlsmファイルを読み込んでデータを操作する基本的なコードです。
import openpyxl
# .xlsmファイルを読み込む
wb = openpyxl.load_workbook('マクロあり.xlsm', keep_vba=True)
# シートを選択
ws = wb.active
# データの読み込み
print(ws['A1'].value)
# セルの値を変更
ws['A1'] = 'マクロありファイルにopenpyxlでアクセスできました!'
# ファイルを保存
wb.save('マクロあり.xlsm')
実行前の「マクロあり.xlsm」
実行後の「マクロあり.xlsm」
openpyxlでも.xlsmファイルの読み書きはできそうだね!
ソースのポイント
- keep_vba=Trueを指定することで、マクロが削除されるのを防ぎます。
- セルのデータの読み書きは通常のExcelファイルと同じ方法で行えますが、マクロの実行や操作はできません。
openpyxlの強みは、単純なデータ操作やファイル作成が軽量で行える点です。一方で、マクロが必要な場合や、ExcelのGUI部分に対する高度な操作が求められる場合には限界があります。
xlwingsでの操作
xlwingsは、ExcelのCOMオブジェクトモデルをPythonから操作するためのライブラリで、Excelアプリケーション自体を制御できます。このため、マクロの実行やExcelの完全な操作が可能です。
基本的な使い方
以下は、xlwingsを使って.xlsmファイルを開き、マクロを実行する例です。
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('マクロあり.xlsm')
# シートを選択
sheet = wb.sheets['Sheet1']
# データの読み込み
print(sheet.range('A1').value)
# セルの値を変更
sheet.range('A1').value = 'マクロが動いたみたい'
# マクロを実行
macro = wb.macro('xlwingsが呼んでいる')
macro()
# ファイルを保存
wb.save('マクロあり.xlsm')
# ファイルを閉じる
wb.close()
仕込んだマクロ
VBAというExcel用の言語をつかって書いているよ!
実行結果
きちんとマクロが動いていることがわかるね!
xlwingsの強みは、マクロの実行やExcelの細かな操作が可能であることです。さらに、Excelのウィンドウを表示した状態で操作できるため、デバッグや手動での確認も容易です。一方、Excelアプリケーション自体が起動するため、操作の速度はopenpyxlに比べて遅くなりがちです。
openpyxlとxlwingsの使い分け
それでは、どのようにこれら2つのライブラリを使い分けるべきでしょうか?
- データの操作がメインで、マクロを実行する必要がない場合は、openpyxlを選ぶのが良いでしょう。openpyxlは軽量で、Excelを起動する必要がないため、スクリプトの実行速度が速くなります。
- マクロの実行やExcelの細かい操作が必要な場合は、xlwingsを使うのが最適です。例えば、複雑な自動処理が含まれる.xlsmファイルを操作したい場合、xlwingsでExcelを制御しながらマクロを呼び出すことができます。
まとめ
Pythonで.xlsmファイルを操作する際には、openpyxlとxlwingsという2つの強力なライブラリが存在します。それぞれの特徴を理解し、用途に応じて使い分けることで、効率的に作業を進めることができます。マクロの実行が必要ない場合はopenpyxlを、必要な場合はxlwingsを選ぶと良いでしょう。
どちらのライブラリもPythonからExcelを操作する強力なツールです。ぜひ、適切な場面で活用して、Excelの自動化や効率化を進めてみてください。
コメント