ワークシート名の一覧を作成するExcel VBA

あなたが作ったExcelファイルの説明資料を準備する際に、ワークシート名の一覧を簡単に作りたいと思ったことはありませんか?

ワークシート数が多い場合に、シート名のタブをクリックしてコピーし、別シートに貼り付ける作業を繰り返すのは苦痛です。また、シート名を誤って変えてしまうリスクもあります。

そこで、本記事では、ワークシート名一覧を簡単に得ることができるマクロを作りましたので、紹介します。

使い方

マクロをコピペする

Visual Basicのエディタを開き、マクロをコピペして下さい。
個人用マクロブックに入れておくと便利です。
マクロの使い方が分からない方は、こちらをご覧ください。

'-----------------------------------------------------------------------
' Summary : ブック内のシート名をシートリストのA列にリストアップする
'-----------------------------------------------------------------------
Public Sub MakeAListOfSheetNames()
    Const cstListSheetName  As String = "シートリスト"
    Dim i                   As Integer      ' ループ制御変数
    Dim intSheetFind        As Integer      ' シートが見つかったら1
    Dim sht                 As Worksheet    ' ワークシートオブジェクト

    '「シートリスト」シートの有無の確認
    For Each sht In Worksheets
        ' シート名を順次調べて、「シートリスト」ならループを抜ける
        If StrComp(sht.Name, cstListSheetName, vbTextCompare) = 0 Then
            Exit For
        End If
    Next sht

    '「シートリスト」シートが見つからなければ作る
    If sht Is Nothing Then
        ' シートを新たに追加
        Set sht = Worksheets.Add(Before:=Worksheets(1))
        '「シートリスト」と名付ける
        sht.Name = cstListSheetName
    End If
    
    '「シートリスト」シートを選択する
    Sheets(cstListSheetName).Select
    ' A列をクリアする
    Range("A:A").Clear
    
    ' リストアップの際にシートリストを含めないため変数をクリア
    intSheetFind = 0
    ' シート名を順にリストアップ
    For i = 1 To Worksheets.Count
        If Worksheets(i).Name <> cstListSheetName Then
            Range("A" & (i - intSheetFind)) = Worksheets(i).Name
        Else
            intSheetFind = intSheetFind + 1
        End If
    Next i
End Sub

MakeAListOfSheetNamesを実行する

「シートリスト」というワークシートのA列に一覧が出来上がります。

順序は気にせずに作りましたが、ワークシートの並びの左から右の順で掲載されるようです。

実行例

既存のシートが左から「Sheet2」「Sheet1」と並んでいるので、A列にその順序で掲載されます。

「シートリスト」が存在していなければ一番左に作成されます。また、「シートリスト」は一覧には掲載されません。

ワークシート名一覧

ワークシート名一覧

コメント

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