ファイルのパスを指定するときは「C:\SWork\Sample.txt」のように記述します。
Sub Sample1() MsgBox Dir("C:\Work\Sample.txt") End Sub
また、次のように「¥」の代わりに「/」を使うこともできます。
Sub Sample2() MsgBox Dir("C:/Work/Sample.txt") End Sub
パスの区切りである「¥」は複数続けてもエラーになりません。
Sub Sample3() MsgBox Dir("C:\\\Work\\\\Sample.txt") End Sub
「..」などの相対パスも指定できますし、そのとき存在しないパスが含まれていてもOKです。
Sub Sample4() MsgBox Dir("C:\Work\.\.\dummy\..\..\Sample.txt") End Sub
こうしてみると、パスの指定はWindowsが寛容に処理してくれています。ですが、ここまで寛容でいいのでしょうか。ExcelのVBAなどで使う分にはそれほど神経質にならなくてもよさそうですが、セキュリティの面から考えると「不正のパス」を指定されるのは好ましくありません。そこで、次のような指定方法があるそうです。パスの前に「\\?\」という記号を付けると、Windowsのサービス精神を抑止できるそうです。
Sub Sample5() If Dir("\\?\C:/Work\\Sample.txt") = "" Then MsgBox "そのファイルは存在しません" Else MsgBox "ファイルは存在します" End If End Sub
これが何に使えるか良い例が思いつきませんが、パスの先頭に「\\?\」を付けるという使い方を知らなかったので、かなり興味深いテクニックでした。