xlwingsでエクセルファイルを編集しているんだけど、
不要なシートがある…。
xlwingsでシートを削除する方法は無いの?
ありますよ!
では今回は、「xlwingsでシートを削除する方法」を
できるだけわかりやすく解説いたします。
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
xlwingsでシートを削除するには
「delete」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets['削除するシート']
worksheet.delete()
worksheet = workbook.sheets['削除するシート']
worksheet.delete()
xlwingsの処理は、予想以上に時間がかかることがあります。
プログラムの最後に「print(‘実行完了’)」などを追記し、完了したのを確認してから結果を見ましょう。
事前準備
- xlwingsのインストール
エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。
xlwingsのインストール方法
xlwingsを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install xlwings
※xlwingsを使用したことがある場合は、このインストール作業は不要です。
インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~アクティブブックの取得
import xlwings
workbook = xlwings.books.active
上記コードにて、「xlwingsのインポート」と「アクティブブックの取得」をしています。
詳細は下記の記事をご覧ください。
シートの削除
worksheet = workbook.sheets['削除するシート']
worksheet.delete()
上記コードにて、対象のシートを削除します。
5行目で、削除対象のシートを取得し、
6行目で削除するといった具合です。
5行目は、右辺に「取得したブックが入った変数」に続けて「.sheets[]」を記述します。
[]内には「削除するシート名」を記述してください。
左辺には「削除するシートを入れておく変数」を作成(記述)します。
6行目に、さきほど作成した「削除するシートが入った変数」を記述し、
続けて「.delete()」を書いて完了です。
<テンプレ>
【 変数 = 取得したブックが入った変数.sheets[‘削除するシート名‘] 】
【 削除するシートが入った変数.delete() 】
削除対象のシートが無い場合
前項で、「削除するシート」という名前のシートを削除しました。
今回は、その「削除するシート」がブック内に無い場合、結果はどうなるのでしょうか?
前項と同じコードを実行してみます。
エラーが出ました。
なにやらよくわからないエラーですね…。
このエラーはいろんな原因で出る可能性があります。
今回は、原因がわかっていますが、実践で出ると原因がわからず焦ると思います。
削除するシート名は間違えないようにするなど、エラーを出さないようにしましょう。
ブック内のシートを全て削除してしまったら・・・
ここに、シートが1つだけ入ったブックがあります。
この1つだけのシートも削除したらどうなるのでしょうか?
エラーが出るのか、はたまたシートの無いブックが残るのか…。
前項と同じコードを実行してみます。
エラーでした。
今回はわかりやすい内容ですね。
すべてのシートを削除することはできないようです。
うまく動作しない時
エラーが出る
com_error: 例外が発生しました
原因はいろいろあるのですが、今回の場合は「対象のシートが存在しない」「ブック内のシートすべてを削除しようとしている」の2つが考えられます。
前項を再確認いただき、コードを修正しましょう。
‘NoneType’ object has no attribute ‘books’
エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
空のブックが生成される・残る
作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。
対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。
作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。
いつまでたっても実行されない
エラーは出ていないのに、いつまでたっても実行されない場合は、実行内容がエクセルに届いていない可能性があります。
「books.active」「sheets.active」を使用していて、エクセルファイルが最小化されていると、実行内容がエクセルに届かない場合があります。(もう1度実行すると、同じ内容が2回実行される)
エクセルは最小化せず、コードエディタとエクセルを並べて表示させた状態で実行するとうまくいきやすいです。
最後に
xlwingsでエクセルファイルのシートを削除する方法を解説いたしました。
当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!