📊 Excel VBA Top100
📋

ListAllSheets

シート管理

すべてのシート名を一覧表示する

ブック内の全ワークシートの情報をVBAで一覧表示するマクロです。Worksheets コレクションをループしてシート名・インデックス・表示/非表示状態・タブ色などの情報を新規シートに書き出します。大規模なブックの構成把握や、非表示シートの存在確認、シート数のカウントなどに役立ちます。生成した一覧表からシートへのリンクを作成してナビゲーションパネルとして活用することもできます。内部ではWorksheetsコレクションをループしながらName・Index・Visible・Tab.Colorなどのプロパティを新規シートに書き出しています。HideSheetで隠したシートやUnhideAllSheetsで再表示したシートの状態確認など、シート管理系マクロ全体の「棚卸し役」として組み合わせて使うと運用の透明性が高まります。

ListAllSheets デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行するとシート一覧がメッセージボックスとアクティブシートへの出力で表示される

🎯 活用シーン

  • ✓大規模ブックの全シートを索引化してナビゲーションシートを作成
  • ✓監査用途で全シート構成(名前・表示状態)を記録
  • ✓非表示シートを含めた完全なシート一覧レポートを生成
  • ✓数十枚規模のブックを引き継ぐ際に、全シートの構成を一覧化して把握しやすくしたいとき
  • ✓定期的なファイル監査で、非表示シートを含めた全シートの状態を記録として残したいとき

💡 実装のヒント

  • ▸Sheets.CountとWorksheets.Countは非表示シートも含めてカウントします
  • ▸Tab.ColorプロパティでタブカラーをRGB値で取得できます
  • ▸Hyperlinks.Addでシート名一覧にジャンプリンクを設定できます
  • ▸生成した一覧にNavigateToSheetで使うハイパーリンクを追加すれば、そのまま目次シートとして活用できます。
  • ▸定期的にこのマクロを実行してログを蓄積しておくと、シート構成の変化を後から追跡できます。

💻 VBAコード

' ListAllSheets
' -----------------
' Macro Name: ListAllSheets
' Description: すべてのシート名を一覧表示する
' Parameters: なし
' Returns: なし
' Usage: 実行するとシート一覧がメッセージボックスとアクティブシートへの出力で表示される
' -----------------

Sub ListAllSheets()
    Dim ws As Worksheet
    Dim outputWs As Worksheet
    Dim sheetList As String
    Dim i As Long
    Dim outputRow As Long
    Dim lastRow As Long
    Dim outputRange As Range

    On Error GoTo ErrorHandler

    sheetList = "シート一覧:" & vbCrLf & vbCrLf

    For Each ws In Worksheets
        sheetList = sheetList & "  " & ws.Index & ": " & ws.Name & vbCrLf
    Next ws

    sheetList = sheetList & vbCrLf & "合計: " & Worksheets.Count & "枚"

    MsgBox sheetList, vbInformation, "シート一覧"

    Set outputWs = ActiveSheet
    lastRow = outputWs.Cells(outputWs.Rows.Count, 1).End(xlUp).Row

    If lastRow < 1 Then lastRow = 1

    outputRow = lastRow + 2
    outputWs.Cells(outputRow, 1).Value = "シート一覧"
    outputWs.Cells(outputRow, 1).Font.Bold = True
    outputWs.Cells(outputRow, 1).Font.Size = 14
    outputRow = outputRow + 1

    outputWs.Cells(outputRow, 1).Value = "番号"
    outputWs.Cells(outputRow, 2).Value = "シート名"
    outputWs.Cells(outputRow, 1).Font.Bold = True
    outputWs.Cells(outputRow, 2).Font.Bold = True
    outputWs.Range(outputWs.Cells(outputRow, 1), outputWs.Cells(outputRow, 2)).Interior.Color = RGB(200, 200, 200)

    outputRow = outputRow + 1

    For i = 1 To Worksheets.Count
        outputWs.Cells(outputRow, 1).Value = i
        outputWs.Cells(outputRow, 2).Value = Worksheets(i).Name
        outputRow = outputRow + 1
    Next i

    outputWs.Columns("A:B").AutoFit
    Exit Sub

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