- ベストアンサー
エクセルのマクロの特定のシート名を検索したい
1つのフォルダにエクセルのファイルが複数あります。 ブックを開かずに、それぞれのブックに「sheet1」が あるかどうかを確認する事ができますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こういう方法もあるというだけで、実用的かどうか分かりませんが、エクセルでは開かずに調べられると思います。 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
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
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などで、特別にエクセルシートのコレクションの取得が出来るようにしてほしいと思いますが、シートはファイルの中の構造なのでね、立ち入ら無いでしょうね。
お礼
いろいろ教えていただきありがとうございました!
- xls88
- ベストアンサー率56% (669/1189)
過去ログですが参考になるかも知れません。 エクセルのマクロでファイルのシート名一覧を取得したい http://oshiete1.goo.ne.jp/qa4418255.html ”開かずに”というのは難しいようです。 ANo.1のコードを実行すると、メモリ上には展開されるようです。 VBEを開くとプロジェクトエクスプローラウインドウに、ブック名が表示されます。
お礼
ありがとうございます!勉強になりましたl
お礼
望んでいたとおりのものです。ありがとうございました!