エクセルファイルを社外に送るんだけど、不要なシートや見られたくないシートがある。
手動で消すのはめんどうだから、openpyxlでシートを削除する方法はないの?
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
openpyxlでエクセルからシートを削除するには
「remove()」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb.remove(wb['削除したいシート'])
wb.save('input.xlsx')
ws = wb.remove(wb['削除したいシート'])
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
シートを削除する
ws = wb.remove(wb['削除したいシート'])
この一文で指定のシートを削除することができます。
[]内に削除したいシート名を記述してください。
<テンプレ>
【 ワークシート変数 = ワークブック変数.remove(ワークブック変数[‘削除したいシート名‘]) 】
削除ではなく新しいシートを追加する方法は、下記記事で解説しております。
シートを削除する際の注意点
シートを削除する前に、注意すべきところがあることを知っておいてください。
- 削除後、削除したシートを指定するコードがあるとエラーになる
- 削除したシートを参照する式が入っていると、そのセルがエラーになる
1つ目は「シートが見つかりません」というエラーになり、プログラムが正常終了しません。
無くなったシートを指定しているため、当然ですね…。
2つ目はエクセル内で参照エラー(#REF!)が出ます。
値貼り付けするなどして、エラーを回避しましょう。
値貼り付け方法は下記記事をご参考ください。
その他の解説
既存ファイル操作の基本解説は下記記事で行っております。ご参考ください。
うまく動作しない時
エラーが出る
At least one sheet must be visible
「At least one sheet must be visible」は、「シートが1つも無いので保存できません」というエラーです。
ブックにシートが1つしかない状態で、そのシートを削除して保存しようとした場合などに起こります。
別のシートを追加してから保存するようにしましょう。
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
また、削除したシートを指定した場合にも起こりますので、確認してみてください。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
openpyxlでエクセルファイルからシートを削除する方法を解説いたしました。
シート削除=「remove」と覚えてください。
最後までお読みいただき、ありがとうございました。がんばってください!