Excelファイルを操作していると、**「特定のシートを先頭や末尾に移動したい」**というニーズはよく発生します。シートの順番を整えることで、閲覧性や操作性が格段に向上します。
本記事では、Pythonライブラリopenpyxl
を用いて、特定のシートを好きな位置に移動させる方法を、具体的なコード例とともに解説いたします。
目次
使用ライブラリ
事前に以下のライブラリをインストールしておいてください。
pip install openpyxl
基本構文:move_sheetの使い方
Workbook.move_sheet(sheet, offset=位置)
sheet
: 移動対象のシート(シート名またはWorksheetオブジェクト)offset
: 現在位置からの相対移動数(整数)
1. シートを1つ後ろへ移動する
from openpyxl import load_workbook
# ブック読み込み
book = load_workbook("作業記録.xlsx")
# シート「概要」を1つ後ろに移動
book.move_sheet("概要", offset=1)
# 保存
book.save("作業記録_更新後.xlsx")
2. シートを先頭へ移動する(相対位置を計算)
from openpyxl import load_workbook
book = load_workbook("作業記録.xlsx")
# シートオブジェクト取得
sheet_target = book["概要"]
# 相対位置を算出して先頭に移動
book.move_sheet(sheet_target, offset=-book.index(sheet_target))
# 保存
book.save("作業記録_更新後.xlsx")
3. シートを末尾に移動する
from openpyxl import load_workbook
book = load_workbook("作業記録.xlsx")
# 末尾へ移動
book.move_sheet("概要", offset=len(book.sheetnames))
# 保存
book.save("作業記録_更新後.xlsx")
応用:すべてのシートの選択状態を解除
シート移動時、まれに「選択済みシート」が原因で処理が不安定になる場合があります。その際は、以下のコードでタブ選択状態をすべて解除すると安定します。
for sheet in book.worksheets:
sheet.sheet_view.tabSelected = None
まとめ
本記事では、PythonでExcelの特定シートを任意の位置に移動する方法を、3つのパターンでご紹介いたしました。
move_sheet
を使えば、相対的にシート位置を変更できるbook.index()
を使えば現在のシート位置を取得可能sheet.sheet_view.tabSelected = None
で選択状態もリセットできる
Excelブックの整理や自動整形にぜひご活用ください。