Excel

【ExcelVBA】シート名取得・シートにシート名を書き出す

2020-10-30

エクセルのシート名をシートに書き出す方法です。

シートの種類

  • Sheets:すべてのシート、グラフシート等も含む
  • Worksheets:ワークシート
  • Charts:グラフシート

シートの数を指定する場合

ワークブックに存在している3つのワークシートを書き出す方法です。

例:ワークブックに3つワークシートのみある場合

シート

以下は書き出し結果です。

書き出し後

サンプルコードです。For~Nextステートメントで全てのシート名を書き出します。

Sub sample1_1()
    Dim i As Long    
    With ThisWorkbook
        For i = 1 To 3
            Cells(i, 1) = sheets(i).Name
        Next i
    End With
End Sub

省略した場合

Sub sample1_2()
    Dim i As Long
    For i = 1 To 3
        Cells(i, 1) = sheets(i).Name
    Next i
End Sub

シートの数に変動のある場合

ワークブックにシートを書き出す方法で、シート数は変動する場合です。

例:ワークブックに以下のシートがある場合

  • 一覧:シート
  • テスト1:ワークシート
  • テスト2:ワークシート
  • テスト3:ワークシート
  • グラフ1:グラフシート
ワークシート

ワークシートのみの書き出し

サンプルコード(省略コード)

Sub sample2_1()
Dim i As Long
    For i = 1 To Worksheets.Count
        Cells(i, 1) = Worksheets(i).Name
    Next i
  • 3行目[Worksheets.Count]:シート数を取得し、シートの数だけくりかえし処理をします
  • 4行目[Worksheets(i).Name]:シート名を取得します。

3行目を「Sheets.Count」にした場合は、グラフシートも含むシートのカウントを実行するので、4行目の「Worksheets(i).Name」でエラーが起こります。

シートの書き出し

グラフシートも含むシートの書き出しです。

Sub sample2_2()
    Dim i As Long
    For i = 1 To Sheets.Count
        Cells(i, 1) = Sheets(i).Name
    Next i
End Sub

グラフシートの書き出し

グラフシートのみの書き出しです。

Sub sample3()
    Dim i As Long
    For i = 1 To Charts.Count
        Cells(i, 1) = Charts(i).Name
    Next i
End Sub

-Excel
-

© 2022 オフィスのQ&A