はじめに
Excelブックの中にシートが増えてくると、
「どんなシートが入っていたかな?」
「シート名を一覧で確認したい」
そんな場面が出てきます。
手作業で確認することもできますが、VBAで一覧を取得しておくと、
後続の処理に使えたり、管理がしやすくなったりと便利です。
ここでは、シート名一覧を取得する基本のコードと、そのしくみをやさしく解説します。
まずはコードを確認
Dim ws As Worksheet
Dim i As Long
i = 1
For Each ws In ThisWorkbook.Worksheets
Cells(i, 1).Value = ws.Name
i = i + 1
Next ws
コードのしくみを解説
For Each でシートを順番に取り出す
For Each ws In ThisWorkbook.Worksheets
この部分で、ブック内のシートをひとつずつ取り出しています。
- ws は Worksheet オブジェクト
- Worksheets はシートの集合
- 1枚ずつ順番に処理される
シート名をセルに書き込む
Cells(i, 1).Value = ws.Name
ここで、A列の i 行目にシート名を書き込んでいます。
- ws.Name → シート名
- i → 行番号(1,2,3…と増えていく)
行番号を進める
i = i + 1
次のシート名を書き込むために行番号を1つ進めています。
あわせて知っておきたいポイント
別の列に書き出したい場合
B列に書きたいときは「2」に変更します。
Cells(i, 2).Value = ws.Name
シートの種類を限定したい場合(ワークシートのみ)
チャートシートなどを除外したい場合は、Worksheets を使うのが安全です。
For Each ws In Worksheets
配列にシート名を格納したい場合
後続処理で使うなら、配列に入れる方法もあります。
Dim names() As String
Dim n As Long
ReDim names(1 To Worksheets.Count)
For n = 1 To Worksheets.Count
names(n) = Worksheets(n).Name
Next n
使うときに気をつけたいこと
- 非表示シートも含まれます
必要に応じて ws.Visible を確認しましょう。
- シートの並び順はそのまま取得されます
並び替えたい場合は、取得後にソートが必要です。
- シート数が多い場合は書き込み先の範囲に注意
100枚以上あるブックも珍しくありません。
まとめ
- シート名一覧は For Each を使うとシンプルに取得できる
- 書き出し先の列や形式は自由に変更可能
- 実務でもよく使う、覚えておくと便利な基本テクニック
シートが多いブックほど、この方法が役に立ちます。

decopon
シート名一覧の取得は、VBAの中でも「知っておくと便利な小技」です。
ちょっとした管理や確認にも使えるので、ぜひ活用してみてください。

moco
シートがたくさんあっても、VBAなら落ち着いて一覧にしてくれるよ。
人は、ひとつずつ確認しなくていいんだね。

コメント