📊 Excel VBA Top100
📋

UnhideAllSheets

シート管理

すべての非表示シートを表示する

ブック内の非表示シートをすべてVBAで再表示するマクロです。Worksheetsコレクションをループして各シートのVisibleプロパティをxlSheetVisibleに変更します。xlSheetVeryHiddenで隠されたシートもVBAで同様に再表示できます。非表示シートの棚卸しや、保護解除後の全シート確認作業などに使用します。再表示後にシート名一覧を出力する処理と組み合わせるとより便利です。内部ではWorksheetsコレクションをループしながらVisibleプロパティをxlSheetVisibleに統一しており、xlSheetHiddenとxlSheetVeryHiddenの両方に対応できる点がExcel標準の「再表示」メニュー操作より優れています。HideSheetで隠した設定シートの棚卸しや、担当者交代時の引き継ぎ確認など、定期的な健全性チェックの一環として活用されます。

UnhideAllSheets デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行すると非表示になっているすべてのシートが表示されます

🎯 活用シーン

  • ✓監査や引継ぎ時にファイル内の隠しシートをすべて公開して確認
  • ✓VeryHiddenで保護していた設定シートをメンテナンス時に一時解除
  • ✓非表示シートの存在を確認してから再整理を行うための前処理
  • ✓退職・異動による引き継ぎ時に、隠されていた全シートを可視化して業務内容を正確に把握したいとき
  • ✓セキュリティ監査でファイル内の隠しシートの有無を確認するために、一時的にすべて再表示したいとき

💡 実装のヒント

  • ▸xlSheetVeryHiddenのシートもVisible = xlSheetVisibleで再表示できます
  • ▸ループ前にシート数を記録しておくと再表示数の確認に使えます
  • ▸シートが保護されている場合は先にブック保護の解除が必要です
  • ▸再表示したシートの一覧をListAllSheetsで出力しておくと、どのシートが隠されていたかの記録が残せます。
  • ▸保護されたブック構造(Workbook.Protectで保護)の場合は、先にブック保護を解除しないとシート表示状態を変更できません。

💻 VBAコード

' UnhideAllSheets
' -----------------
' Macro Name: UnhideAllSheets
' Description: すべての非表示シートを表示する
' Parameters: なし
' Returns: なし
' Usage: 実行すると非表示になっているすべてのシートが表示されます
' -----------------

Sub UnhideAllSheets()
    Dim ws As Worksheet
    Dim hiddenCount As Long
    Dim i As Long

    On Error GoTo ErrorHandler

    hiddenCount = 0
    For Each ws In Worksheets
        If ws.Visible = xlSheetHidden Then
            hiddenCount = hiddenCount + 1
        End If
    Next ws

    If hiddenCount = 0 Then
        MsgBox "非表示のシートはありません。", vbInformation
        Exit Sub
    End If

    For Each ws In Worksheets
        If ws.Visible = xlSheetHidden Then
            ws.Visible = xlSheetVisible
        End If
    Next ws

    MsgBox hiddenCount & "枚のシートを表示しました。", vbInformation
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub