大量のExcelファイルを扱う業務では、「各ファイルに含まれるシート数」を事前に把握しておくことが、作業計画の立案や人的リソースの配分に大きく役立ちます。
本記事では、Pythonのopenpyxl
とpathlib
を用いて、指定フォルダ内のすべての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.xlsx | 5 | 1 |
業務チェック表_B.xlsx | 3 | 0 |
予算案_C.xlsx | 6 | 2 |
活用シーン
- 大量ファイルの保守・更新作業の事前工数見積もり
- 非表示シートの有無をチェックして、情報漏洩対策に活用
- 管理用の帳票台帳の作成支援
まとめ
本記事では、Pythonを使ってExcelファイルに含まれる全シート数および非表示シート数を一括で集計する方法をご紹介いたしました。
openpyxl
でExcelファイルを読み込みpathlib
でフォルダ内のファイルを一括処理- 新規ファイルに整然と一覧出力
大量のExcel資産を対象とする定期点検や棚卸作業の効率化に、ぜひお役立てください。