プロが教えるわが家の防犯対策術!

VBA でWorkbooks.Open(”C:\XXX\AAA.xlsx)のようにXXXをワイルドカードにして、特定のAAA.xlsxを開くにはどうすれば良いのでしょうか?
下記のようにすればとれると思ったのですが、取得できません。(""になります。)

Pass = Dir(”C:\" & "*" & "\AAA.xlsx")

ちなみに、AAA.xlsxは必ず存在します。

A 回答 (1件)

c:\folder1\AAA.xlsx


c:\folder2\AAA.xlsx
c:\folder3\AAA.xlsx
複数あったらどれを開けばいいの?

c:\folder2\folder21\AAA.xlsx
は対象になるの?

ワイルドカードが「c:\g*\AAA.xlsx」みたいな指定の仕方されるの?

とか、やりたい事がイマイチ不明瞭です。

--
c:\直下のどれかのフォルダにあるAAA.xlsxの最初に見つかったものを探すのなら、

Office TANAKA - Excel VBA Tips[ファイルを検索する]
http://officetanaka.net/excel/vba/tips/tips36.htm

のサイトを参考にして、

Sub Sample()
 Msgbox FileSearch("C:\", "AAA.xlsx")
End Sub

Function FileSearch(Path As String, Target As String) As String
 Dim FSO As Object, Folder As Variant, File As Variant
 ' FileSystemObject
 Set FSO = CreateObject("Scripting.FileSystemObject")
 ' Pathのサブフォルダをなめる
 For Each Folder In FSO.GetFolder(Path).SubFolders
  ' Folder.Pathのファイルをなめる
  For Each File In FSO.GetFolder(Folder.Path).Files
   If File.Name = Target Then ' ファイル名が一致したら
    FileSearch = File.Path
    Exit Function
   End If
  Next File
 Next Folder
End Function

とか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
同名ファイルは、別ディレクトリには存在しない(どこかに1つだけ存在する)ファイル名という約束ごとがあります。
やはり、フォルダ内をなめないとダメということですね。
一発で取れる方法がないかが知りたかったです。

提示頂いたURLやサンプルコードのやり方では、キチンと取得できました。
お騒がせしました。

お礼日時:2017/09/13 15:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています