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

Excel X for Macでのマクロについての質問です。

特定のフォルダにあるファイルの存在を調べたいです。
変数Pathには検索対象のフォルダのフルパスが入っているとします。

zzz = Dir(Path & "Book*.xls")
if zzz = "" then
  MsgBox "存在しない"
else
  MsgBox "存在する"
End if

WindowsのExcel2003の場合、
上記で、変数Pathのフォルダに[Bookで始まるxlsファイル]が存在すれば、
「存在する」と表示されます。

Excel X for Macの場合、
上記コードでは仮に[Bookで始まるxlsファイル]が存在していても検索に引っかかりません。
どうやらワイルドカード[*]が使えないようなのですが、
Mac上のワイルドカードは * ではないのでしょうか。
ワイルドカードが使えない場合、
指定したフォルダの中から[Bookで始まるxlsファイル](=ファイル名が明確にはわかっていない)の存在を調べるようなコードを作るにはどうしたらよいでしょうか。

Excel X for Macでも、冒頭を、
 zzz = Dir(Path & "Book1.xls")
と書き換えて実行した場合、
Book1.xlsがあれば「存在する」と表示されるので、検索のコード自体は間違っていないと思います。

A 回答 (2件)

Excel 2004 の Visual Basic ヘルプ内、Dir 関数の記述です。



> Windows の場合、複数のファイルを指定するための "*" (アスタリスク) および "?" (疑問符)
のワイルドカード文字を使用できます。Macintosh の場合、これらの文字は有効なファイル名
の文字として扱われるため、このワイルドカード文字を使用して複数ファイルを指定すること
はできません。

ということで、仕様のようです。
    • good
    • 0

ちなみに Mac でも Like 関数による文字列比較ではワイルドカードが使えます。


そこで例えば

MyFileName = Dir(Path)

Do While MyFileName <> ""
zzz = MyFileName Like "Book*.xls"
If zzz = True Then
MsgBox "存在する"
Exit Do
End If
MyFileName = Dir()
Loop

If MyFileName = "" Then
MsgBox "存在しない"
End If

といったマクロを使えば、特定のフォルダの Book*.xls ファイルの有無を調べることができます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

挙げていただいたLike関数でなんとかなりそうです。
MyFileName = Dir(Path)だとフォルダ内のファイル全て検索する必要がでてきますけど、
問題無いレベルです。

ありがとうございました。

お礼日時:2008/08/08 19:24

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