FileExists()でワイルドカードが使えない。その代替方法
FileSystemObjectのCopyFile()、MoveFile()、DeleteFile()ではワイルドカードが使えるのに、FileExists()では使えません。:-(
以下のような代替方法は、ワイルドカード相当の判定式を作るのが面倒なのと、ファイル数の多いフォルダでは性能も遅そうです。:-(
For Each File In Folder.Files
If ワイルドカード相当の判定式 Then Exit For
Next
そこで、ワイルドカードが使えるCopyFile()、MoveFile()で代替できないものか?
Function FileExists(Spec)
Dim fso
Dim ParentFolderName
Set fso=CreateObject("Scripting.FileSystemObject")
ParentFolderName=fso.GetParentFolderName(Spec)
If ParentFolderName="" Then ParentFolderName="."
On Error Resume Next
fso.CopyFile Spec,ParentFolderName
'fso.MoveFile Spec,ParentFolderName
FileExists=Err.Number<>53
End Function
CopyFile()、MoveFile()のいずれを使っても可能ですが、CopyFile()のほうが性能が良さそう。
« VBSファイルの実行を逐次化する。 | トップページ | FileExists()でワイルドカードが使えない。その代替方法(その2) »