2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« VBSファイルの実行を逐次化する。 | トップページ | FileExists()でワイルドカードが使えない。その代替方法(その2) »

2008年2月 7日 (木)

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) »