• ベストアンサー

エクセルのマクロの特定のシート名を検索したい

1つのフォルダにエクセルのファイルが複数あります。 ブックを開かずに、それぞれのブックに「sheet1」が あるかどうかを確認する事ができますか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

こういう方法もあるというだけで、実用的かどうか分かりませんが、エクセルでは開かずに調べられると思います。 Sub test() If sheetCheck("C:\Documents and Settings\?????\My Documents\Book1.xls", "Sheet1") = True Then MsgBox "Sheet1あり" Else MsgBox "Sheet1なし" End If End Sub Private Function sheetCheck(bookFullPath As String, sheetName As String) As Boolean Dim getValue As Variant Dim pathParts As Variant Dim i As Long Dim bookPath As String pathParts = Split(bookFullPath, "\") bookPath = pathParts(0) For i = 1 To UBound(pathParts) - 1 bookPath = bookPath & "\" & pathParts(i) Next i On Error Resume Next getValue = ExecuteExcel4Macro("'" & bookPath & "\[" & pathParts(UBound(pathParts)) & "]" & sheetName & "'!R1C1") If Err.Number = 0 Then sheetCheck = True On Error GoTo 0 End Function

matchy4649
質問者

お礼

望んでいたとおりのものです。ありがとうございました!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

Sub test02() Set FS = CreateObject("Scripting.FileSystemObject") Set Fol = FS.GetFolder("C:\Documents and Settings\OTO\My Documents\") Set Fil = Fol.Files For Each Fx In Fil 'ファイル名 sfile = Fx.Name If Right(sfile, 4) = ".xls" Then MsgBox sfile End If Next End Sub でファイル名は個々のブックを開かなくても捕まえられます。しかし ブック名を手がかりに、ブックを開かずに!、エクセルのシートのコレクションを捕まえるのは普通に簡単には出来ません。VBAのVBの部分以外が使えないからです。 Googleで「ブック 開かず シート名取得」で照会してみてください。 相当数過去の同じ質問が出ます。 そこに、田中先生の http://officetanaka.net/excel/vba/tips/tips28.htm があり ExecuteExcel4Macro("'C:\[Book1.xls]Sheet1'!R1C1") ガ載ってますが、4.0マクロを使ってでもやりますか。 あとデータベース接続でやる方法など出てます。 VBScriptなどで、特別にエクセルシートのコレクションの取得が出来るようにしてほしいと思いますが、シートはファイルの中の構造なのでね、立ち入ら無いでしょうね。

matchy4649
質問者

お礼

いろいろ教えていただきありがとうございました!

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

過去ログですが参考になるかも知れません。 エクセルのマクロでファイルのシート名一覧を取得したい http://oshiete1.goo.ne.jp/qa4418255.html ”開かずに”というのは難しいようです。 ANo.1のコードを実行すると、メモリ上には展開されるようです。 VBEを開くとプロジェクトエクスプローラウインドウに、ブック名が表示されます。

matchy4649
質問者

お礼

ありがとうございます!勉強になりましたl

関連するQ&A