【Excel】全てのシート名を一覧で取得する方法

【Excel】全てのシート名を一覧で取得する方法

Excelで複数のシートを扱っていると、「いま何枚シートがあるのか」「まとめて一覧表示できないか」と悩む場面は意外と多いですよね。

手動でタブを数え上げるのは手間がかかるばかりか、間違いの原因にもなりがちです。

そこでこの記事では、わずかなステップでExcelの全シート名をまとめて取得できる3つの方法と、それぞれの特徴をご紹介します。

  1. イミディエイト ウィンドウから全シート名を一覧取得
  2. Excelのマクロ関数を使って全シート名を一覧取得
  3. Excelのマクロを使って全シート名を一覧取得する方法

用途や場面に応じてそれぞれ使い分けてみてください。

作業中のシート名だけをセルに表示する場合は、もっと簡単な方法があります。
【Excel】シート名をセルに表示する関数をご覧ください。

目次

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法

まず最初にご紹介するのが、VBAの開発画面 (VBE) の「イミディエイト ウィンドウ」を使い、全シート名を出力する方法です。

  1. Excelを開き、Alt + F11でVBAエディターを起動します。
  2. VBAの開発画面 (VBE)でCtrl + Gを押して「イミディエイトウィンドウ」を表示します。
  3. 以下のコードをイミディエイトウィンドウに入力してEnterを押します。
For Each i In ThisWorkbook.Sheets: debug.print i.name : next i
  1. イミディエイトウィンドウに全てのシート名が一覧表示されます。

一時的にExcelブック内全体のシート名を確認したいなら、イミディエイト ウィンドウの活用が最適です。

入力したコードの結果がすぐに表示され、コピーしてExcelのシートに貼り付けることもできます。

また、なマクロを組む必要がないため、初心者でも手軽に試せる点も大きな魅力です。

ここからは、イミディエイト ウィンドウから全てのシート名を一覧で取得する方法を、実際の画面を使いながらわかりやすく解説しています。

STEP
Excelの「開発」タブをクリック

Excelの「開発」タブをクリックしてください。

「開発」タブが表示されていない場合は、【Excel】開発タブの表示方法をご覧ください。

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step1 Excelの「開発」タブをクリック
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step1 Excelの「開発」タブをクリック
STEP
「Visual Basic」をクリック

次に、「Visual Basic」をクリックしてください。

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step2 「Visual Basic」をクリック
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step2 「Visual Basic」をクリック
STEP
「表示(V)」→「イミディエイトウィンドウ(I)」をクリック

「Visual Basic」をクリックすると、VBAの開発画面 (VBE) が表示されます。

Excelの画面をアクティブウィンドウにした状態でAlt+F11を押してもVBAの開発画面 (VBE) が表示されます。

上部にある「表示(V)」をクリックし、メニューの中から「イミディエイトウィンドウ(I)」をクリックしてください。

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step3 「表示(V)」→「イミディエイトウィンドウ(I)」をクリック
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step3 「表示(V)」→「イミディエイトウィンドウ(I)」をクリック
STEP
「For Each i …」を入力してEnter

「イミディエイトウィンドウ(I)」をクリックすると、VBAの開発画面 (VBE)の下部に「イミディエイト」と書かれた枠が表示されます。

VBAの開発画面 (VBE) でCtrl+Gを押してもイミディエイトウィンドウが表示されます。

その枠の中に、以下の文字列を貼り付けてEnterを押してください。

For Each i In ThisWorkbook.Sheets: debug.print i.name : next i
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step4 「For Each i …」を入力してEnter
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step4 「For Each i …」を入力してEnter
STEP
表示されたExcelブック内のシート名を選択してコピー

Enterを押すと、イミディエイトウィンドウの中にExcelブック内の全シート名が表示されます。

表示されたシート名を選択し、Ctrl+Cでコピーしてください。

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step5 表示されたExcelブック内のシート名を選択してコピー
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step5 表示されたExcelブック内のシート名を選択してコピー
STEP
シートに貼り付ける

コピーしたシート名をExcelに貼り付ければ完成です。

これで、Excelブック内の全てのシート名を一覧で取得することができました。

イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step6 シートに貼り付ける
イミディエイト ウィンドウから全てのシート名を一覧で取得する方法 Step6 シートに貼り付ける

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法

次は、Excelの「マクロ関数」を使って、Excelファイル内の全シート名を一覧で取得する方法をご紹介します。
通常のExcel関数とは異なる仕組みですが、うまく活用すればVBAを使わずにシート名の一覧を取得できます。

簡単な流れは以下のとおりです。

  1. 「数式」タブ→「名前の管理」をクリック
  2. 「名前の管理」ウィンドウで「新規作成」をクリック
  3. 「名前」(任意の文字)と「参照範囲」(=TEXTAFTER(GET.WORKBOOK(1), "]"))を入力して「OK」をクリック
  4. Excelのシートに戻って「名前」の関数を入力

手順こそやや複雑ですが、VBAの開発画面(VBE)を使わずに済むうえ、一度設定すればブックを再計算するたびに一覧が自動更新される点が最大の魅力です。

マクロ関数を使うため、Excelファイルをマクロ有効ブック(*.xlsm)形式で保存する必要があります。

ここからは、Excelのマクロ関数を使って全てのシート名を一覧で取得する方法を、実際の画面を使いながらわかりやすく解説しています。

STEP
Excelの「数式」タブをクリック

まずはマクロ関数をExcelに登録し、通常の関数のように使える状態に整えましょう。

Excelの「数式」タブをクリックしてください。

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step1 Excelの「数式」タブをクリック
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step1 Excelの「数式」タブをクリック
STEP
「名前の管理」をクリック

次に、「名前の管理」をクリックしてください。

Excelのリボンが折りたたまれて操作しにくい場合は、「【Excel】リボン(メニューバー)を常に表示する方法|デスクトップ版・Web版対応」をご覧になり、リボンを常に表示に切り替えてください。

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step2 「名前の管理」をクリック
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step2 「名前の管理」をクリック
STEP
「新規作成(N)...」をクリック

「名前の管理」をクリックすると、「名前の管理」ウィンドウが表示されます。

その中にある「新規作成(N)...」をクリックしてください。

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step3 「新規作成(N)...」をクリック
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step3 「新規作成(N)...」をクリック
STEP
「新しい名前」ウィンドウに必要な項目を入力し、「OK」をクリック

「新規作成(N)...」をクリックすると、「新しい名前」と書かれたウィンドウが表示されます。

その中で以下の項目を入力してください。

入力が終わったら「OK」をクリックしてください。

項目名入力する値説明
名前(N)sheetname関数として使用する名前。
短く、入力しやすい文字列推奨。
範囲(S)ブックこの関数を適用する範囲。
初期値のままでOK。
コメント(O)-後ほど見返すためのコメント。
関数に影響無し。
参照範囲(R)=TEXTAFTER(GET.WORKBOOK(1), "]")シート名を表示するマクロ関数。
Excelファイル内のシート名を表示する関数を登録する
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step4 「新しい名前」ウィンドウに必要な項目を入力し、「OK」をクリック
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step4 「新しい名前」ウィンドウに必要な項目を入力し、「OK」をクリック
STEP
「閉じる」をクリック

「OK」をクリックすると、「新しい名前」と書かれたウィンドウが閉じられます。

「名前の管理」ウィンドウの「閉じる」をクリックしてください。

これでExcelファイル内のシート名を表示する関数が登録されました。

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step5 「閉じる」をクリック
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step5 「閉じる」をクリック
STEP
シートに関数を入力して、シート名を表示する

マクロ関数の登録が完了したら、最後にStep4で定義した「名前」を使い、実際にセルへ関数を記述していきましょう。

=sheetname

記述する関数はたったこれだけです。

この式を入力すると、Excelブック内のすべてのシート名が一覧で表示されます。

Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step6 シートに関数を入力して、シート名を表示する(横向き)
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step6 シートに関数を入力して、シート名を表示する(横向き)

表示結果を縦にしたい場合は以下の関数を使用してください。

=TRANSPOSE(sheetname)
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step6 シートに関数を入力して、シート名を表示する(縦向き)
Excelのマクロ関数を使って全てのシート名を一覧で取得する方法 Step6 シートに関数を入力して、シート名を表示する(縦向き)

Excelのマクロを使って全シート名を一覧取得する方法

ここまでの方法でもExcelブック内の全シート名を一覧取得できますが、番外編としてマクロ関数を使った一覧取得の手順もご紹介します。

  1. ExcelのVBAの開発画面 (VBE) 開き(Alt + F11)、新しいモジュールを挿入します。
  2. 以下のコードを入力します。
Sub GetSheetNames()
    Dim ws As Worksheet
    Dim i As Integer
    i = 1
    For Each ws In ThisWorkbook.Sheets
        Sheets(1).Cells(i, 1).Value = ws.Name
        i = i + 1
    Next ws
End Sub
  1. VBAの開発画面 (VBE)上の「▶(実行)」ボタンをクリック、またはF5キーを押します。
  2. Excel画面に戻ると、アクティブなワークシートのA列にシート名が順番に表示されます。

Excelでシート名を一覧取得する3つの方法(イミディエイトウィンドウ、マクロ関数、VBA)のメリットとデメリット

紹介した3つの方法それぞれの手順におけるメリット・デメリットをわかりやすくまとめました。

イミディエイト ウィンドウで一覧表示

特徴

  • 「開発」タブから開ける VBE(Visual Basic Editor) のイミディエイト ウィンドウに短いコードを入力し、シート名を一気に確認する方法です。

メリット

  • 即時に一覧表示
    入力したコードを実行すると、ワークブック内のシート名をすぐに表示できます。
  • 追加の保存形式が不要
    通常のExcelファイル(.xlsx)のままでも利用できるので、マクロ有効ブックに変換しなくてもOKです。
  • コピーしやすい
    表示されたシート名を、テキストとして簡単にコピーできます。

デメリット

  • VBAの操作が前提
    「開発者タブ」やVBEを開けない環境では使えません。
  • 一時的な確認向き
    定期的にシート名を管理するには、手間がかかるかもしれません。

Excelのマクロ関数で一覧取得

特徴

  • レガシー機能の「GET.WORKBOOK」関数を利用して、ブック内のシート名をセルに並べて表示する方法です。
  • VBAを使わずに済むので、マクロ禁止の職場でも許可されていれば利用できる場合があります。

メリット

  • VBA不要
    「マクロが使えない環境」でも、Excel4.0マクロが有効なら試せる可能性があります。
  • 再計算で自動更新
    一度設定すると、ブックを再計算するたびにシート名リストが最新状態に更新されます。
  • 初期設定後は簡単
    名前の管理で一度関数を登録すれば、シート上の数式だけで一覧取得が完結します。

デメリット

  • 古い機能
    Excel4.0マクロは正式には推奨されていないため、利用を制限している環境があります。
  • 文字操作に工夫が必要
    ブック名まで一緒に表示される場合があるため、別途関数(MIDやFIND)で切り出す手間が発生するかもしれません。

Excelのマクロ (VBA) で一覧取得

特徴

  • Excelに組み込まれた VBA を使い、マクロを記述することでシート名を一覧化します。
  • 「マクロ有効ブック(.xlsm)」として保存し、ボタン1つで実行できるようにするなど、自由度が高い方法です。

メリット

  • 強力な自動化
    シート名の一覧以外にも、追加の処理を連動させるなど多彩な応用が可能です。
  • 何度でも実行できる
    マクロを一度組めば、必要なタイミングでいつでもシート名を更新できます。
  • 大幅な効率化
    シートが膨大にあるファイルでも、一瞬でリスト化できます。

デメリット

  • マクロ有効ブックの保存が必要
    拡張子が「.xlsm」の形式となるため、会社のセキュリティポリシーによっては制限がある場合があります。
  • VBAの知識が必要
    コードを書く手間がかかり、エラーへの対処も含めて初心者には少し難しく感じることもあります。

Excelでシート名を一覧取得する方法に関するよくある質問と答え

Excelでシート名を一覧取得する方法に関するよくある質問と答えをまとめました。

基本設定や環境

開発タブが見当たらず、Excelでシート名一覧を取得する方法が分かりません。

Excelでマクロやイミディエイト ウィンドウなどを使うには、開発タブが必要です。
ファイル→オプション→リボンのユーザー設定から「開発」にチェックを入れると、リボンに開発タブが追加されます。
詳しい操作手順は【Excel】開発タブの表示方法をご覧ください。

会社のPCでVBAマクロが使えません。ほかの方法はありますか。

VBAマクロが使えない場合、イミディエイト ウィンドウから全てのシート名を一覧で取得する方法を試してみてください。

xlsmとxlsxの違いがわからないのですが、どちらがシート名の一覧取得に適していますか。

xlsxはマクロを含められない形式のため、VBAコードの実行ができません。
一方、xlsm(マクロ有効ブック)ならマクロやマクロ機能を使えるので、シート名を自動で一覧化する処理を組み込めます。自動化や効率化を求めるなら、xlsmが適しています。

セキュリティ警告が頻繁に出るのですが、何か軽減策はありますか。

マクロやレガシー機能を使うと、Excelはウイルス被害を防ぐために警告を表示します。ファイル→オプション→セキュリティ センターからマクロの設定や信頼できる場所を調整すると警告が減ります。
詳しい操作手順は【Excel】「マクロの実行がブロックされました」と表示された場合の対処法をご覧ください。

プログラミング経験が乏しくても、シート名の一覧を取得する方法はありますか。

VBAが苦手なら、マクロ関数(GET.WORKBOOK)を使う方法がおすすめです。
名前の管理で設定し、シートに数式を書く形なので、コードを直接書く必要がありません。イミディエイト ウィンドウに数行入力する方法もありますが、Visual Basic Editorを開く抵抗がある方にはマクロ関数のほうがとっつきやすいでしょう。

イミディエイト ウィンドウを使ってExcelでシート名を一覧取得する方法について

イミディエイト ウィンドウによる一覧取得の手順を教えてください。

開発タブ→Visual BasicをクリックしてEditorを起動し、上部メニューの「表示」→「イミディエイト ウィンドウ」を選びます。下部に入力欄が出現します。
そこに、For Each ws In ThisWorkbook.Sheets: Debug.Print ws.Name: Next wsと打ち込んでEnterを押すと、アクティブなExcelブック内のシート名が一覧表示されます。

一覧表示されたシート名を他のファイルへコピーできますか。

イミディエイト ウィンドウの出力はテキスト扱いなので、ドラッグして選択し、Ctrl+Cでコピー可能です。別のExcelシートやメモ帳に貼り付ければ、シート名を再利用できます。

シートの追加や削除があった場合、もう一度同じコードで取得できますか。

同じコードを再度実行すれば、新規シートや削除されたシートも含めた最新版の一覧が得られます。
イミディエイト ウィンドウは一時的に確認するのに便利ですが、定期的に一覧が必要ならマクロ関数VBAマクロで自動化すると手間が省けます。

イミディエイト ウィンドウが見つからない場合、どうすればよいでしょうか。

Visual Basic Editorの「表示」メニュー内に「イミディエイト ウィンドウ」があるはずです。
クリックしても見当たらない場合は、画面下部に最小化されている可能性があるので、下端やウィンドウ境界線をドラッグして表示領域を広げてみてください。

マクロ関数を使ってExcelでシート名を一覧取得する方法について

GET.WORKBOOKを使うメリットは何でしょうか。

VBAコード不要でシート名一覧を作れる点が大きいです。会社によってはマクロ(VBA)が厳しく制限されていても、マクロ関数は許可されている場合があります。
名前の管理に=GET.WORKBOOK(1)を登録しておけば、数式を使うだけでブック内のシート名を参照できます。

[Book1]Sheet1のようにブック名まで出てくると邪魔なのですが、取り除く方法を教えてください。

使っているExcelがMicrosoft 365なら=TEXTAFTER(A1,"]")で"]"の後ろだけ抜き出せます。古いExcelでは、=MID(A1,FIND("]",A1)+1,255)のようにMIDとFINDを組み合わせる方法が一般的です。
シート名だけ表示されるよう加工してください。

Excelのマクロ関数自体が無効化されている場合はどうすればいいですか。

レガシー機能をオフにしている企業も多いため、その場合はイミディエイト ウィンドウVBAマクロなど、別の方法を使うしかありません。

古いExcelで、動的配列がない場合にシート名をきれいに並べる方法はありますか。

TRANSPOSE関数や配列数式(Ctrl+Shift+Enter)を使えば、縦や横への整列が可能です。
Excel 2019以前は動的配列が使えないため、あらかじめ必要な範囲を選択し、配列数式として確定してください。バージョンに応じて操作がやや異なるのでご注意ください。

VBAマクロを使ってExcelでシート名を一覧取得する方法について

xlsx形式ではマクロが動作しないのはなぜですか。

xlsx形式はマクロやコードをブロックする仕様で、VBAのような自動処理が実行できません。マクロを含んだ処理を行う場合はxlsm形式を選び、開くときもマクロを有効にする必要があります。

マクロを作ったのに動かないとき、最初に確認すべきことは何ですか。

よくある原因として、スペルミス、xlsm形式での保存忘れ、実行するプロシージャを間違えているなどが挙げられます。
Visual Basic Editorのステップ実行を使うと、エラーや停止箇所を突き止めやすくなるので、コードを少しずつ動かして確認してみてください。

企業で使うときの注意点はありますか。

個人利用ならVBAマクロが最も柔軟ですが、企業ではマクロやレガシー機能を無効にしていることがあります。IT管理者向けには、グループポリシーでマクロ有効ブックやマクロ関数機能の使用可否を細かく設定できる仕組みがあるため、セキュリティリスクと作業効率のバランスを見極めることが重要です。
許可されているならVBAで本格的に自動化できますし、制限が厳しい場合はイミディエイト ウィンドウやGET.WORKBOOK(マクロ関数)など最小限の方法を活用してシート名一覧を取得するとよいでしょう。

その他Excelに関する記事

その他Excelに関する記事はこちらです。是非御覧ください。

最後までご覧いただきありがとうございました。
このサイトは情シスマンが半径3m以内のITに関する情報を掲載してるサイトです。
Windows系を主として、ソフトや周辺機器の操作や設定について画像も用いながらわかりやすく解説しています。

解説している内容に誤りがあった場合や、補足が必要な場合、もっと知りたい場合はこちらのお問い合わせフォームからご連絡ください。
個人の方を限定にサポートさせていただきます。

実行環境
Windows11 Home 24H2
64 ビット オペレーティング システム
11th Gen Intel(R) Core(TM) i7-11375H @ 3.30GHz 3.30 GHz
16.0 GB RAM
Microsoft 365

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次