仕事の作業を簡略化したく、エクセルのシート名一覧を作る必要があったので、調べた結果を残します😊
エクセル関数を使ってシート名を取得する方法
シート名を取得する方法としては、↓のようにエクセルの関数で各シート毎に取得して、集計する方法もあるようです。エクセル シート名を取得する
【Excel講座】シート名をCELL関数で取得してブック内の目次作成方法
ですが、個人的には各シートには影響を与えずにシート一覧が取得したかったので、マクロを使うことにしました😁👍
マクロ(VBA)を使ってシート名を取得する方法
一時的に分かれば良いだけの時
あくまで今のシート一覧を作れれば良いという場合は、VBAのデバックでよく使う、イミディエイトウィンドウを使って、取得する方法があるようです。- ALT+F11でマクロのエディタを起動
- イミディエイトウインドウの表示を確認(表示されてなければ、Ctrl+Gで表示)
- イミディエイトウインドウの枠内に下記入力してEnter
- ウィンドウの下にシート名一覧が表示
- コピーして張り付けたいセルに貼り付け
For Each i In ThisWorkbook.Sheets: debug.print i.name : next i
以上!
一時的に取得したいだけであれば、かなり便利な方法です✨
何度も取得する必要がある時
更新する度に一覧が欲しいこともあるので、ココではマクロを組んで、更新の都度など何度も一覧を作るときに便利な方法を記述します。基本的には、forでループさせてすべてのシートを循環し、Nameでシート名を取得する簡単なマクロです!
Sub シート名一覧取得() Dim i As Long For i = 1 To Worksheets.Count - 1 Cells(2, i) = Worksheets(i).Name Next End Sub
以上!
あとは、一覧を記入したいセルを選択して、マクロを実行するだけで一覧が取得できます😁✨
因みに、今回は行(横)方向に一覧を作りましたが、列(縦)方向に出力したい場合は、
Cells(2, i)のところを、Cells(i, 任意の数)にすれば列方向に一覧が作れます👍
また、Worksheets.Count - 1としていますが、最後の-1は今回出力するシートが一番最後にしているので、-1することで最後のシートの名称を抽出しないためにつけています。一番最初のシートに一覧表をつけて、一番最初のシート名を抽出したくない場合は、
Sub シート名一覧取得() Dim i As Long For i = 2 To Worksheets.Count Cells(2, i) = Worksheets(i).Name Next End Subに変更すると2シート目以降全てのシート名の一覧ができます。
参考
EXCEL 全シート名を取得し一覧に!VBAを利用して一瞬で解決Excel マクロシート名一覧を作成する~Excel 2013 マクロ講座
0 件のコメント:
コメントを投稿