【VBA】ブック内のワークシート名をすべて取得する

Excel・VBA

エクセルブックにある全てのワークシート名を取得する方法を説明します。

シート名を取得する。

ワークシート名はNameプロパティを利用して取得可能です。

具体的には、ブック内の3番目のシート名を取得する場合は次のようにします。

変数=Worksheets(3).Name

コードを実行して確認します。

この下のエクセルファイルの3番目のシート(Sheet3)の名前を取得します。

コード

Sub nameget()

    Dim wsName As String
    
    wsName = Worksheets(3).Name
    MsgBox (wsName)
    
End Sub

動作結果

実行結果

3番目のシート名”Sheet3″を取得できました。

全てのシート名を取得する

Nameプロパティを利用してエクセルブック内のシート名をすべて取得する方法です。

Sub 名前を全て取得する()

    Dim wsName() As String
    Dim wsNum As Long: wsNum = 0
    Dim ws As Worksheet
    Dim i As Long: i = 1
    
    Dim allName As String
    
    For Each ws In Worksheets
     wsNum = wsNum + 1
    Next
    
    ReDim wsName(1 To wsNum, 1 To 1)
    
    For Each ws In Worksheets
     wsName(i, 1) = ws.Name
     i = i + 1
    Next
    
    For i = 1 To wsNum   ’以下は取得した名前を表示させるための部分
     If i = 1 Then
      allName = wsName(i, 1)
     Else
      allName = allName & vbCrLf & wsName(i, 1)
     End If
    Next
    
    MsgBox allName
        
End Sub

このコードでは最初にワークシート数を数え、シート数に応じた配列を再定義し、そこに取得した名前を格納しています。

非表示になっているシートの名前も取得できます。

コメント

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