Python(openpyxl)で、Excelシートの名前変更・存在チェック・ループ・枚数取得など、シート操作の基本コードをまとめました。
ぜひ、お試しください。
シート名を変更 4選
シート名を変更(特定のシート)
以下のコードを実行すると、特定シートの名前を変更します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']
#シート名を変更
ws.title = 'シート2'
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')
Excelシート内の特定シートの名称を自動変更します。
[ws = wb[‘Sheet2’]] にて、対象シートを指定しています。

シート名を変更(特定の文字を含むシート)
以下のコードを実行すると、特定文字を含むシートの名前を変更します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
#ファイル内の全てのシートをループ
for ws in wb.worksheets:
if '月' in ws.title:
#シート名を変更
ws.title = ws.title + '度'
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')
Excelシート内で、特定文字を含むシートの名称を自動変更します。
シート名に ”月” を含む場合、シート名の後ろに ”度” を追加します。

シート名を変更(一番左のシート)
以下のコードを実行すると、一番左側にあるシート名を変更します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[0]
#シート名を変更
ws.title = 'シート1'
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')
Excelシート内の一番左にあるシート名を変更します。
[ws = wb.worksheets[0]] は、一番左端のシートを指定しています。

シート名を変更(一番右のシート)
以下のコードを実行すると、一番右側にあるシート名を変更します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[-1]
#シート名を変更
ws.title = 'シート3'
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')
Excelシート内の一番右にあるシート名を変更します。
[ws = wb.worksheets[-1]] は、一番右端のシートを指定しています。

シートが存在するかチェック
以下のコードを実行すると、Excelシートを1つずつループして、特定シートの存在有無を確認します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
target_name = 'Sheet4'
check = False
#ファイル内の全てのシートをループして検索
for ws in wb.worksheets:
#指定シートが存在していれば、変数にTrueを格納
if ws.title == target_name:
check = True
if check == True:
print(target_name + 'は存在します')
else:
print(target_name + 'は存在しません')
シートが存在する場合
[check == True] となり、シートが存在しているという判定になります。

シートが存在しない場合
[check == False] となり、シートが存在しないという判定になります。

シートを1つずつループ
以下のコードを実行すると、Excelシートを1つずつループします。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
#ファイル内の全てのシートをループ
for ws in wb.worksheets:
print(ws.title)
forループを使用して、すべてのシートをループしました。
シートの一覧を取得することができました。

シート枚数をカウント
以下のコードを実行すると、エクセルファイル内にシートがいくつあるか調べます。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
print(len(wb.worksheets))
コード実行後
ワークシートの枚数「3」を表示します。

「表示」「非表示」の両方を合わせたシート枚数「3」を表示します。

シート移動 5選
シート移動(特定シート)
以下のコードを実行すると、特定のシートを1つ左に移動します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']
wb.move_sheet(ws,offset=-1)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')
コード実行後
Excelシート内の特定シートの位置を移動します。
[ws = wb[‘Sheet2’]] にて、対象シートを指定します。

シート移動(先頭を移動)
以下のコードを実行すると、先頭にあるシートを右側へ移動します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[0]
wb.move_sheet(ws,offset=2)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')
コード実行後
Excelシート内の先頭にあるシートを2つ右へ移動します。
[ws = wb.worksheets[0]] は、一番左端のシートを指定します。

シート移動(末尾を移動)
以下のコードを実行すると、末尾にあるシートを左側へ移動します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[-1]
wb.move_sheet(ws,offset=-3)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')
コード実行後
Excelシート内の末尾にあるシート位置を3つ左へ移動します。
[ws = wb.worksheets[-1]] は、一番右端のシートを指定します。

シート移動(先頭へ移動)
以下のコードを実行すると、特定文字を含むシートを先頭へ移動します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
i = 0
#ファイル内の全てのシートをループ
for ws in wb.worksheets:
i = i + 1
if 'まとめ' in ws.title:
#先頭までの移動シート枚数
Top_Sheet = i - 1
#シート移動
wb.move_sheet(ws,offset=-Top_Sheet)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')
コード実行後
Excelシート内で「まとめ」を含むシートを一番左(先頭)に移動します。
シートが全部でいくつあるかわからない場合や、
対象シートの位置が分からない場合でも動作します。

シート移動(末尾へ移動)
以下のコードを実行すると、指定シートを末尾へ移動します。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']
i = 0
#ファイル内の全てのシートをループ
for my_ws in wb.worksheets:
i = i + 1
if my_ws == ws:
#対象シートの位置取得
Target_Sheet = i
else:
continue
#シート移動
wb.move_sheet(ws,offset= i - Target_Sheet)
#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')
コード実行後
Excelシート内の特定シートを一番右(末尾)に移動します。
シートが全部でいくつあるかわからない場合や、
対象シートの位置が分からない場合でも動作します。

この記事がお役に立ちますと幸いです。
・【Python】エクセルを自動処理する方法まとめ

「PythonでExcel、メール、Webを自動化する本」
準備に時間をかけず、すぐ始められます
実践的な例題で、実務で本当に使えるプログラムを紹介
自分の仕事を効率化したい方に大きな武器になるオススメの1冊です!