Excelの複数ファイルのシート名一覧を作成
フォルダ内にあるExcelファイルについてすべてのシート名を取得して一覧にするマクロです。
実行すると対象となるフォルダの問い合わせがあり、そのフォルダにあるExcelファイルをすべてピックアップします。それらを開いてすべてのシート名を取得し閉じます。結果はアクティブになっているシートに貼り付けますので白紙のシートを開いてから実行してください。
なお、そのフォルダの下の階層のファイルについては対応していません。Word2007で確認しました。
Sub シート名一覧の作成()
Dim fn(1000)
Dim sn(10000, 10)
'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
mypath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
'ファイル名の取得
fn(1) = Dir(mypath, vbDirectory)
i = 1
Do
i = i + 1
fn(i) = Dir
Loop Until fn(i) = ""
'シート名の取得
x = 0
For j = 1 To i - 1
ext = Mid(fn(j), InStrRev(fn(j), ".") + 1, 3)
If ext = "xls" Then
Workbooks.Open Filename:=fn(j)
For k = 1 To Sheets.Count
sn(x, 1) = fn(j)
sn(x, 2) = Sheets(k).Name
x = x + 1
Next k
ActiveWorkbook.Close
End If
Next j
'シート名一覧の作成
Cells.ClearContents
Cells(1, 1) = mypath
Cells(3, 1) = "ファイル名"
Cells(3, 2) = "シート名"
x = 0
Do
Cells(x + 4, 1) = sn(x, 1)
Cells(x + 4, 2) = sn(x, 2)
x = x + 1
Loop Until sn(x, 1) = ""
End Sub
Dim fn(1000)
Dim sn(10000, 10)
'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
mypath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
'ファイル名の取得
fn(1) = Dir(mypath, vbDirectory)
i = 1
Do
i = i + 1
fn(i) = Dir
Loop Until fn(i) = ""
'シート名の取得
x = 0
For j = 1 To i - 1
ext = Mid(fn(j), InStrRev(fn(j), ".") + 1, 3)
If ext = "xls" Then
Workbooks.Open Filename:=fn(j)
For k = 1 To Sheets.Count
sn(x, 1) = fn(j)
sn(x, 2) = Sheets(k).Name
x = x + 1
Next k
ActiveWorkbook.Close
End If
Next j
'シート名一覧の作成
Cells.ClearContents
Cells(1, 1) = mypath
Cells(3, 1) = "ファイル名"
Cells(3, 2) = "シート名"
x = 0
Do
Cells(x + 4, 1) = sn(x, 1)
Cells(x + 4, 2) = sn(x, 2)
x = x + 1
Loop Until sn(x, 1) = ""
End Sub





















すいません 教えて下さい 一つのフォルダの中に12くらいのブックがあり、その12位のブックの中に30枚位ずつシートがあります。例えばそのフォルダの中で エクセルの標準についている 検索 を「カーテン」という言葉でかけても ブック名までは検索結果に出て来ますが シート名までは出てこないので、結局は検索結果に出てきた ブック名を開いて そのブックの中で 又検索をかけて どのシートなのかを探して…と一苦労なので、 大きなフォルダの中にある 360くらいあるシートの 全一覧表があって、そしてその中のシート名で 「カーテン」と付いている名前を 検索して出てきた そのシート名をポンと押したら、そのシートにパッと飛べる…なんて事は できるものは ないのでしょうか?すみません 教えていただけないでしょうかm(__)m
返事が遅くなり申し訳ありません。
できるかどうか分かりません。
ちょっと考えさせてください。
@ゆきこ
作ってみました。
記事に書きましたので試してみてください。
http://stabucky.com/wp/archives/3606