OpenPyXLで最後・右端のシートを取得するコードについて記事を書きました。
xlwingsでも、似たコードでシートを取得できます。
xlwingsで最後・右端のシートを取得する
Cドライブのtempフォルダーに、複数のワークシートが存在するfoo.xlsxファイルを用意しておいて、以下のスクリプトを実行すれば、最後尾のシート名が出力されます。
wb = xlwings.Book('C:\\temp\\foo.xlsx')
ws = wb.sheets[-1]
print(ws.name)
xlwingsではExcel VBA的なコードでSheetを取得できる
上記コードの検証中に、xlwingsの場合、Excel VBA的なコードでもSheetオブジェクトを取得できることに気がつきました。
wb = xlwings.Book('C:\\temp\\foo.xlsx')
ws = wb.sheets(1)
print(ws.name)
上記のスクリプトを実行すると、先頭のシート名が出力されます。
Python的なコードで先頭シートを取得するのは、
ws = wb.sheets[0]
であるのに対し、Excel VBA的なコードの場合は
ws = wb.sheets(1)
である点には注意が必要です。
Excel VBAで、Sheets(0)やSheets(-1)では実行時エラーが発生するのと同様、xlwingsでsheets(0)やsheets(-1)で例外が発生します。
xlwingsではExcel VBA的に書けるに過ぎない
上記のとおり、
ws = wb.sheets(1)
で先頭のsheetを取得できますが、これはExcel VBA的に書けるようにxlwingsが実装されているに過ぎません。
Excel VBAの場合は、Sheets(1)をSheets.Item(1)と書くこともできますけれど、xlwingsの場合、
ws = wb.sheets.Item(1)
ws = wb.sheets.item(1)
いずれもAttributeErrorが発生します。
最終更新日時:2019-04-26 10:07
Home » Python » xlwingsの使い方 » xlwingsではExcel VBA的なコードでもSheetを取得できる