• ベストアンサー

エクセルのマクロでファイルのシート名一覧を取得したい

特定フォルダ内にエクセルのファイルが複数あります。 エクセルのファイル名の取得は「Filesearch」を使い取得出来ました。 更にそのファイルの中にあるシート名を取得し、シート名の一覧を ワークシートに貼り付けたいと考えています。 よろしくご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

過去スレが残っていましたので紹介します。 A1セルに特定のフォルダのパスを入れておきます。 Sub Sample1() Dim buf As String, i As Long Dim j As Long buf = Dir(Range("A1").Value & "\*.xls") Do While buf <> "" i = i + 1 Workbooks.Open Worksheets(1).Range("A1").Value & "\" & buf ThisWorkbook.Worksheets(1).Cells(i + 1, 1).Value = buf For j = 1 To Worksheets.Count ThisWorkbook.Worksheets(1).Cells(i + 1, j + 1) = Sheets(j).Name Workbooks(buf).Activate Next Workbooks(buf).Close SaveChanges:=False buf = Dir() Loop End Sub で試してみてください。

matchy4649
質問者

お礼

返事が遅くなり申し訳ありませんでした。 ありがとうございました! 出来ました。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

ANo.2で、hallo-2007さんが提示されたコードではシートに書き出しているようです。 アレンジして流用すればどうでしょうか。(そのためにはコードを解読しなければなりません。) >エクセルのファイル名の取得は「Filesearch」を使い取得出来ました。 上記内容がお出来になる方ですから、大丈夫だと思います。 トライして、解らない、うまくいかない、ということなら、試しているコードを提示してみてください。 教えてもらったマクロを動かすことが「出来ました。」ではなく、「理解ができました。」にしてください。 偉そうなことを言って済みません。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

下記でシート名(グラフシート含む)が取れます。 Sub testシート名取得()   Dim appobj As Object   Dim sht As Object   Set appobj = GetObject("C:\Exceldata\ABC.xls")   For Each sht In appobj.Sheets     MsgBox sht.Name   Next   Set appobj = Nothing End Sub

matchy4649
質問者

補足

返事が遅くなりまして申し訳ありません。 ありがとうございます。 甘えてしまうようですがもう一点教えてください。 msgboxですとそれぞれOKを押さないと表示されませんが ワークシートに書き出すにはどのようにすれば よろしいのでしょうか? 教えていただいておいて失礼とは思いますがご教授ください。

関連するQ&A