2006年11月08日

ファイルとフォルダの存在を確認するおそらく一番楽な方法(VB6〜VB2008まで)

VB6だけのTipsを公開するのは今回が初めてです。
ここ1年半程、仕事でVB6を使って開発することがない(バグ修正を除けば)。
しかしオンラインソフトはほとんどVB6で作っているのでバリバリのVB6使いであることに変わりない。
近く公開予定のフリーソフト「ファイルとフォルダの神隠し」を作っているときに思いついた便利な方法を内緒で教えます。

ファイルの有無・フォルダの有無をチェックするには例えばFileSystemObjectを使ったスクリプトがよく知られている。が、ファイル用とフォルダ用が別のメソッドになっている。これでは事前にファイルかフォルダか判定してからでないと使えない。

それを事前チェック無しで、ファイルかフォルダかも判定して存在をチェックする方法が以下の簡単な記述でできる。今までこの倍もあるコードを書いてしかもフォルダチェックはダミーの書き込みまでしていたから(そこではDir関数で判定していた)自分でも唖然としている。頭と関数は使い様だと思った。


'//// ファイル及びフォルダの有無チェック(タイプを返す) /////
' 0=フォルダ、1=ファイル、-1=存在しない
'-----------------------------------------------------------
Public Function Exists(ByVal strPathName As String) As Integer
'strPathName : フルパス名
'------------------------
Dim ret As Integer
On Error GoTo CheckError
If (GetAttr(strPathName) And vbDirectory) = vbDirectory Then
Debug.Print strPathName & "はフォルダです。"
ret = 0
Else
Debug.Print strPathName & "はファイルです。"
ret = 1
End If
Exists = ret
Exit Function
 
CheckError:
Debug.Print strPathName & "が見つかりません。"
Exists = -1
End Function
 
'//// ファイル及びフォルダの有無チェック(有無のみ判定) /////
' True=存在する、False=存在しない
'-----------------------------------------------------------
Public Function Exists2(ByVal strPathName As String) As Boolean
'strPathName : フルパス名
'------------------------
On Error GoTo CheckError
If (GetAttr(strPathName) And vbDirectory) = vbDirectory Then
Debug.Print strPathName & "はフォルダです。"
Else
Debug.Print strPathName & "はファイルです。"
End If
Exists2 = True
Exit Function
 
CheckError:
Debug.Print strPathName & "が見つかりません。"
End Function


解説すると、(GetAttr(strPathName) And vbDirectory) = vbDirectory を実行し、エラーすれば存在しないパスだと判るしTrueであればフォルダであり、Falseであればファイルだというのだ。
実に判りやすい。
ここで紹介したTipsはVB6だけではなく、最新のVisual Basic 2008 (Express Edition)でも使える。しかもソース変更無しで。


posted by なっちゃん at 18:45| 静岡 ☁| Comment(0) | TrackBack(0) | VB Tips | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。