【Excel VBA】シート名一覧を取得する基本コードとやさしい解説

VBA & Excel
スポンサーリンク
スポンサーリンク

はじめに

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
decopon

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

moco
moco

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

コメント

タイトルとURLをコピーしました