サイトアイコン 独学エクセル塾

【Python×Excel】特定のシートだけを別ファイルとして保存する方法~新しいブックの作成~

 

大量のデータを扱うExcelでは、

「この1枚のシートだけ他の人に共有したい」「特定のシートだけ別ファイルにしたい」と思う場面、ありますよね。

実は、Pythonを使えば、複数シートを持つExcelファイルの中から

1つのシートだけを切り出して別ファイルに保存することが簡単にできます。

今回ご紹介するのは、Pythonの人気ライブラリ「openpyxl」を使った方法です。




⬛︎こんなことができるようになる!

・複数シートのExcelから、1つのシートだけを抜き出して保存できる
・元ファイルを壊さず、特定のシートだけを共有可能
・業務の効率化や、誤送信リスクの軽減に効果的

⬛︎使用ライブラリの準備

まず、Pythonがインストールされていることを確認してください。
次に、以下のライブラリをインストールします。

pip install openpyxl

⬛︎サンプルコード:特定のシートだけ保存する方法

では、例として、指定したExcelファイルを開いて対象シートをコピーしたいと思います。
今回は、「A.xlsx」というファイルの「売り上げシート」というシートを新しく別のブックとして保存してみましょう。

 

コードは以下の通りです。

from openpyxl import load_workbook, Workbook

# 元のファイルを読み込む
input_file = "A.xlsx"
sheet_to_extract = "売上シート"

# 元のブックからシートを取得
original_wb = load_workbook(input_file)
original_ws = original_wb[sheet_to_extract]

# 新しいブックを作成
new_wb = Workbook()
new_ws = new_wb.active
new_ws.title = sheet_to_extract

# セルの内容をすべてコピー
for row in original_ws.iter_rows(values_only=True):
    new_ws.append(row)

# 新しいファイルとして保存
new_wb.save(f"{sheet_to_extract}.xlsx")

⬛︎コード解説

load_workbook() で元のExcelファイルを読み込みます
.iter_rows(values_only=True) で1行ずつ読み取り
append() を使って新しいブックにコピー
save() で新しいファイルに保存(元ファイルは変更されません)

実行した結果は以下の通りです。

無事、対象のシート名で新しくブックを作成することができました。

⬛︎応用:複数のシートを選んで保存したいときは?

以下のように、対象シート名をリスト化してループで処理すればOKです。

sheets_to_extract = ["売上", "在庫"]

for sheet_name in sheets_to_extract:
    original_ws = original_wb[sheet_name]
    new_wb = Workbook()
    new_ws = new_wb.active
    new_ws.title = sheet_name

    for row in original_ws.iter_rows(values_only=True):
        new_ws.append(row)

    new_wb.save(f"{sheet_name}.xlsx")

⬛︎まとめ

Pythonを使えば、面倒な「シートだけ保存」の作業が一瞬で終わります!

■ この技術はこんな時に便利

・営業部だけに「売上」シートだけ送りたい
・在庫管理だけ別ファイルにしてクラウドで共有したい
・機密性の高いシートを切り離して渡したい

 

モバイルバージョンを終了