エクセルのシート名がデフォルトのままだとわかりづらい…。
わかりやすい名前にしたいんだけど、
openpyxlでシート名を変更する方法を教えて!
了解!簡単にできますよ!
また、シート名を変更するために、
シートを取得する方法も3つ紹介します!
openpyxlでシート名を変更する方法を
python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
openpyxlでシート名を変更するには
「title」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
#ws = wb.worksheets[0]
#ws = wb.active
ws.title = '変更後シート'
wb.save('input.xlsx')
ws.title = ‘変更後シート’
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
「シート名の変更」と「シートを取得する方法」の2つを解説いたします。
シート名を変更
>>8.ws.title = ‘変更後シート’
上記一文にて、取得したワークシートのシート名を変更することができます。
左辺は、ワークシート変数の後ろに「.title」を付けます。
右辺は「変更したいシート名」を記述してください。
【 ワークシート変数.title = ‘変更したいシート名‘ 】
変更後のシート名が既に存在していた場合
変更後のシート名が既に存在していた場合はどうなるのでしょうか。
上書きされてしまいそうですが、実際はそうではありません。
下図のように「○○1」と連番がつけられ、重複や上書きが回避されます。
シートを取得する方法
シートを取得する方法ですが、見本では3種類記述いたしました。
- シート名を指定して取得:ws = wb[‘Sheet1’]
- シート番号を指定して取得:ws = wb.worksheets[0]
- アクティブなシートを取得:ws = wb.active
一つ一つ解説していきます。
シート名を指定して取得
>>ws = wb[‘Sheet1’]
上記のように記述することで、ワークシートのシート名を指定して取得することができます。
シート名を間違えたり、実際には無いシート名を指定するとエラーになりますので、ご注意ください。
【 ワークシート変数 = ワークブック変数[‘取得したいシート名‘] 】
シート番号を指定して取得
>>ws = wb.worksheets[0]
次にシート番号で指定して取得する方法です。
【 ワークシート変数 = ワークブック変数.worksheets[ワークシート番号] 】
「ワークシート番号」ですが、一番左のシートが「0」、その右が[1]という具合になります。
「-1」という指定のしかたをすると、一番右のシートを取得します。(-2なら右から2番目)
このシート番号を指定する方法は、シート名を指定する方法のように「シート名指定間違いでエラー」となることはありません。
しかしながら、シートが2枚しかないのに「10」など、限度を超える指定のしかたをするとエラーになりますので覚えておきましょう。
アクティブなシートを取得
>>ws = wb.active
最後はアクティブなシート(選択されているシート)を取得する方法です。
【 ワークシート変数 = ワークブック変数.active 】
シート名やシート番号を指定する方法と違って、エラーになることはありません。
しかしながら、変更したいシート以外がアクティブになっていた場合、エラーにならずに違うシートの名前が変更されてしまうことになるので、注意が必要です。
関連記事として、別のシートをアクティブにする方法を解説しております。
その他、既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
list index out of range
規定を超える部分を操作しようとした時に出るエラーです。
今回の場合では、実際にないSheet3(シート番号2)などを指定した場合にも起こります。
ファイルとコードを再確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでシート名を変更する方法を解説いたしました。
シート名変更 = title と覚えてください。
最後までお読みいただき、ありがとうございました。がんばってください!