PythonでExcelファイルのシート数を一括集計し、作業量を見積もる方法|openpyxl×pathlibによる業務効率化

大量のExcelファイルを扱う業務では、「各ファイルに含まれるシート数」を事前に把握しておくことが、作業計画の立案や人的リソースの配分に大きく役立ちます。

本記事では、Pythonのopenpyxlpathlibを用いて、指定フォルダ内のすべてのExcelファイルからシート数と非表示シート数を集計し、一覧表に出力する方法をご紹介いたします。


目次

使用ライブラリ

本記事のスクリプトでは以下のライブラリを使用します。

pip install openpyxl

処理の概要

  • ./archives/フォルダに保存された複数のExcelファイルを対象とする
  • 各ファイルの「全シート数」と「非表示シート数」を取得
  • 結果を新しいExcelファイル「シート数_集計結果.xlsx」に一覧出力

Pythonコード:Excelブックのシート数を一括で集計する

from pathlib import Path
from openpyxl import load_workbook, Workbook

# 出力用の新規Excelファイルを作成
summary_book = Workbook()
summary_sheet = summary_book.active
summary_sheet.title = "集計結果"

# 見出しを設定
summary_sheet["B2"] = "ファイル名"
summary_sheet["C2"] = "全シート数"
summary_sheet["D2"] = "非表示シート数"

# 対象フォルダを指定
target_dir = Path("./archives")

# 各Excelファイルについて処理
for index, excel_path in enumerate(target_dir.glob("*.xlsx")):
    try:
        report_book = load_workbook(excel_path)
    except Exception as e:
        continue  # ファイル破損などによる例外は無視して次へ

    output_row = index + 3

    # 全シート数を取得
    all_sheets = report_book.sheetnames
    total_sheets = len(all_sheets)

    # 非表示のシート数を取得
    hidden_sheets = [ws for ws in report_book.worksheets if ws.sheet_state != "visible"]
    hidden_count = len(hidden_sheets)

    # 出力
    summary_sheet[f"B{output_row}"] = excel_path.name
    summary_sheet[f"C{output_row}"] = total_sheets
    summary_sheet[f"D{output_row}"] = hidden_count

# 結果を保存
summary_book.save("シート数_集計結果.xlsx")

実行結果の例

ファイル名全シート数非表示シート数
年度報告書_A.xlsx51
業務チェック表_B.xlsx30
予算案_C.xlsx62

活用シーン

  • 大量ファイルの保守・更新作業の事前工数見積もり
  • 非表示シートの有無をチェックして、情報漏洩対策に活用
  • 管理用の帳票台帳の作成支援

まとめ

本記事では、Pythonを使ってExcelファイルに含まれる全シート数および非表示シート数を一括で集計する方法をご紹介いたしました。

  • openpyxlでExcelファイルを読み込み
  • pathlibでフォルダ内のファイルを一括処理
  • 新規ファイルに整然と一覧出力

大量のExcel資産を対象とする定期点検や棚卸作業の効率化に、ぜひお役立てください。

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

この記事を書いた人

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

目次