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

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(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