Pythonで特定のExcelシートを任意の位置へ移動する方法|openpyxlでタブ順を整える

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ブックの整理や自動整形にぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次