Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » 開いている全ブックのシート名一覧を作成するマクロ

開いている全ブックのシート名一覧を作成するマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

開いている全ブックのシート名一覧を作成するマクロ

「シート名 取得 一覧 複数 ファイル」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

複数のファイル・ブックのシート名一覧を作成する方法を探している方による検索です。

この検索だけでは、どのような要望なのかが特定できませんが、参考になりそうなVBA(Visual Basic for Applications)マクロをご紹介しておきます。

[スポンサードリンク]

開いているすべてのブックの、シート一覧を作成するマクロです。

▼開いているすべてのブックのシート名を出力する

Sub 開いている全ブックのシート名一覧を作成する()

 Dim bk As Workbook
 Dim sh As Object
 Dim row_num As Long

 'シート枚数を1枚に設定して新規ブックを作成
 Application.SheetsInNewWorkbook = 1
 Workbooks.Add

 '見出し行の作成
 Range("A1").Value = "ブック名"
 Range("B1").Value = "シート名"
 Range("A1:B1").HorizontalAlignment = xlCenter

 'ブック名・シート名の出力を開始する行番号を変数に格納
 row_num = 2

 For Each bk In Workbooks
  'ブックが、一覧を作成しているブックではないときに処理実行
  If bk.Name <> ActiveWorkbook.Name Then
   'ブック名の書き出し
   Cells(row_num, 1) = bk.Name
   'シート名の書き出し
   For Each sh In bk.Sheets
    Cells(row_num, 2) = "'" & sh.Name
    '行番号のインクリメント
    row_num = row_num + 1
   Next sh
  End If
 Next bk

 'ブック名・シート名を書き出した列幅を自動調整
 Range("A:B").EntireColumn.AutoFit

End Sub

上記のマクロを実行すると、シートが1枚の新規のブックが作成され、そのA列にブック名、B列にシート名が書き出されます。

すべてのブックに対するループ処理の中で、
 For Each bk In Workbooks

すべてのシートに対するループ処理を行っています。
   For Each sh In bk.Sheets

シート名が「001」のような場合に
    Cells(row_num, 2) = sh.Name
のような書き出しをするとセル上では「1」に変更されてしまうので、それを避けるためにシート名の前に「'」(シングルクォート)をつけて出力しています。
    Cells(row_num, 2) = "'" & sh.Name

ブック名は1回しか書き出さないようにしていますが、すべてのシート名の隣にブック名も出力したいのなら
   For Each sh In bk.Sheets
    Cells(row_num, 1) = bk.Name
    Cells(row_num, 2) = "'" & sh.Name
のようにブック名を書き出す処理を、内側のループの中に入れてください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » 開いている全ブックのシート名一覧を作成するマクロ

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.