「python excel ワークシート 削除 xlsx」
という検索キーワードをキッカケに、OpenPyXLを使ってExcelのシートを削除するコードについて書きました。
xlwingsを使った場合もご紹介しておきます。
xlwingsでシートを削除するスクリプト
Cドライブのtempフォルダーに、複数のシートが存在するブックfoo.xlsxを用意して以下のスクリプトを実行すると、末尾のシートが削除されfoo2.xlsxとして保存されます。
wb = xw.Book('C:\\temp\\foo.xlsx')
wb.sheets[-1].delete()
wb.save('C:\\temp\\foo2.xlsx')OpenPyXLの場合Workbookオブジェクトのremove()メソッドでシートを削除できるのに対し、xlwingsの場合はSheetオブジェクトのdelete()メソッドです。
Excel VBAでは、WorksheetオブジェクトにDeleteメソッドが用意されているのと対応しています。
1枚しかないシートを削除しようとした場合
1枚しかシートが存在しないブックからシートを削除しようとしたときの挙動も、xlwingsの場合はExcelに準拠しています。
Excel VBAで1枚しかないシートを削除しようとした場合、下図のような実行時エラーが発生します。
xlwingsで、1枚しかないシートを削除しようとした場合も、
pywintypes.com_error: (-2147352567, '例外が発生しました。', (0, 'Microsoft Excel', 'ブックのシートをすべて削除または非表示にすることはできません。\n\n選択したシートを非表示、削除、または移動するには、まず新しいシートを挿入するか、非表示のシートを表示してください。', 'xlmain11.chm', 0, -2146827284), None)
といった例外が発生します。
最終更新日時:2023-02-08 11:03
Home » Python » xlwingsの使い方 » xlwingsでシートを削除する-Sheet.delete()メソッド