【Excel】複数のシート名の一覧を取得する【VBA不要も・3選】

get-all-sheet-names-in-excel VBA
この記事は約6分で読めます。
スポンサーリンク

本記事ではエクセル (Excel) で現在使用しているファイル内の複数シート名の一覧を取得する方法を3つご紹介します。シートが多く存在し、手動で取得できない場合に特に有用です。VBAを使用しない方法もご紹介していますので、どなたでも簡単に活用できます。

Excelファイルの全シート名の一覧を取得したい

本記事で実装する処理

複数シートの一覧ではなく、現在のシート名のみを抽出したい場合はエクセルでシート名を取得しセルに表示するをご確認ください。

結論

本記事でご紹介する、シート名一覧を取得する方法は下記の3通りです
(クリックで該当セクションにジャンプします)

方法1:手動でシート名をコピペする

まず、シート数が数枚程度の場合に利用できる簡単な方法をご紹介します。シート名を逐一コピペするになります。具体的なステップは下記のとおりです。

エクセルのシート名を個別にコピペする方法
  • シート名をダブルクリック、または、[ホーム]タブ→[書式][シート名の変更]、からシート名の入力画面に移動します
  • 編集画面からシート名をコピーします
  • その後、任意のセルにシート名をペーストします
シート名の

ショートカット:

  • シート名の入力画面を表示: AltHOM

以上が、手動でシート名を取得する方法の解説になります。シート名が数多く存在する場合に全シートや複数のシート名の一覧を取得したい方はこちらではなく、次2つの方法をご検討ください。

方法2:[名前付き範囲]にシート名一覧を表す数式を登録する

次に、[名前付き範囲]に数式を登録し、任意のセルに=[登録した名前]と入力する方法をご紹介します。数式の登録後は、簡単にシート名一覧を出力することができるので非常に便利な方法になります。ファイルを保存する際にはマクロ有効ブック(*.xlsm)として保存する必要があるのでご注意ください。

名前付き範囲を使用してシート名一覧を出力する方法の解説

シート名一覧を出力するための名前付き範囲を登録する
  1. [数式]タブの[名前の管理]を開く: [数式]タブの[定義された名前]セクションにある[名前の管理]をクリックします
  2. 新しい名前を作成: [新規作成]ボタンをクリックして新しい名前を作成します。
  3. 名前と数式を入力:下記の数式を任意の名前で登録します。ここではlist_SheetNamesという名前で登録しています
    =TEXTAFTER(GET.WORKBOOK(1), "]")
シート名一覧を出力するための名前付き範囲を登録する手順

上記で#Name?エラーが発生する場合は下記の数式を使用してください。古いバージョンのExcelを使用している方に向けた、全く同じ結果を出力するための関数です。

=REPLACE(GET.WORKBOOK(1), 1, FIND("]", GET.WORKBOOK(1)), "")
任意のセルに登録した名前を出力する

最後に、任意のセルに先程登録した名前付き範囲 (ここではlist_SheetNames) と入力します。これにより、現在のシートを含め、ファイル内の全シート名の一覧が出力されます。出力の方向を縦・横で切り替えるには=TRANSPOSE(list_SheetNames)のように[TRANSPOSE関数]を使用してください。

すべてのシートを取得する名前付き範囲の出力結果

シート名一覧ではなく、特定のシートのみまたは1枚ずつのシート名を取得したい場合は下記のように入力してください。

=INDEX(list_SheetNames, [index (任意の自然数)])
  • ここでは[index]により、シート一覧から特定のシート名を指定して取得しています。任意の自然数にご変更の上ご使用ください
  • ブック内のシート数よりも大きい値を[index]に指定すると#Ref!エラーが返されます
  • INDEX関数の使い方は公式ドキュメントをご確認ください

最後に、一連の動作のショートカットは下記のとおりです。

ショートカット:

  • 名前付き範囲のダイアログを開く:
    Ctrl+F3
  • ダイアログから新しい名前付き範囲を作成する:
    Alt+N

方法3:VBAでシート名一覧を出力する

最後に、下記のExcelのVBAコードを使用してブック内のシート名一覧を出力する方法をご紹介します。コードの使用方法を動作について解説します。

Sub GetAllSheetNames()
'Written by consulting-campus.site
Dim sht As Worksheet
Dim cell As Range
For Each sht In ActiveWorkbook.Worksheets
    '現在のシート名を出力したい場合はIf節をコメントアウトしてください
    If ActiveSheet.Name <> sht.Name Then
        ActiveCell = sht.Name
        ActiveCell.Offset(1, 0).Select
    End If
Next sht
End Sub

シート名一覧を出力するマクロを登録する

まず、Alt+F11 キーを押して、ビジュアルエディタを開きます。

select-visual-editor

ビジュアルエディタ上で[挿入] → [標準モジュール] (Alt+IM) で新しいモジュールを作成します。

select-new-module

ExcelでVBAを実行方法をより詳しく知りたい方は【丁寧に解説】エクセルでマクロ・VBAを実行するをご確認ください。

シート名一覧を出力するマクロを実行する

開いたモジュールにて、下記のコードを入力し、F5 キーを押して実行します。実行時には通常の計算シートにて、シート一覧を取得したいセルを選択状態にするようにしてください。

Sub GetAllSheetNames()
'Written by consulting-campus.site
Dim sht As Worksheet
Dim cell As Range
For Each sht In ActiveWorkbook.Worksheets
    '現在のシート名を出力したい場合はIf節をコメントアウトしてください
    If ActiveSheet.Name <> sht.Name Then
        ActiveCell = sht.Name
        ActiveCell.Offset(1, 0).Select
    End If
Next sht
End Sub

実行後、A2:A11セルにファイル内の全シート一覧が取得・出力されていることが確認できます。

すべてのシートを取得するマクロの実行結果

おわりに

以上が、エクセルでシート名一覧を取得する方法3選のご紹介となります。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

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