部品_ファイル存在チェック
FileExists
https://feelcodelab.com/vba_parts/fileexists/
・指定したパスに、ファイルが存在するかを判定する ・存在する場合は True、存在しない場合は False を返す ・ファイルを開く、別名保存、PDF出力などの前に、存在や上書きを確認する用途で使用する ★ この部品は Sub(プロシージャ)ではなく「Function(関数)」で、Boolean を返す
土台
確認
ファイル
★【最重要】この部品は Function(関数)であり、戻り値(Boolean)を返す
→ 呼び出し側は、戻り値を受け取って、存在の有無を判定する
・ファイルのパスは、フルパス(ドライブ名またはネットワークパスから始まるパス)で指定する
・対象はファイルのみ(指定したパスがフォルダの場合は False を返す)
・隠しファイル・システムファイルも、存在すれば True を返す
・設定の誤りは、False ではなく、原因を示すエラーで止まる(Err.Raise)
- パスが空文字(空白のみを含む)(vbObjectError + 1012)
- パスにワイルドカード(* または ?)が含まれている(vbObjectError + 1013)
・Offset / Find / Resize / With は禁止・なし(土台の部品。他の部品を参照しない。単独で使用可能) ・他の部品から呼ばれる側(例:f_FileExists → f_OpenFile_ByPath)
・特になし
vFilePath : 存在を確認したいファイルのフルパス(String)
Boolean : ファイルが存在する場合は True、存在しない場合(フォルダを含む)は False
Boolean
Function 部品_ファイル存在チェック(ByVal vFilePath As String) As Boolean
部品_ファイル存在チェック = f_FileExists(vFilePath)
End Function
Function f_FileExists(ByVal vFilePath As String) As Boolean
Dim fileAttr As Long
f_FileExists = False
If Len(Trim$(vFilePath)) = 0 Then
Err.Raise vbObjectError + 1012, "f_FileExists", _
"ファイルのパス(vFilePath)が空文字です。"
End If
If InStr(vFilePath, "*") > 0 Or InStr(vFilePath, "?") > 0 Then
Err.Raise vbObjectError + 1013, "f_FileExists", _
"ファイルのパスに、ワイルドカード(* または ?)は使えません(" & vFilePath & ")。"
End If
On Error GoTo ErrHandler
fileAttr = GetAttr(vFilePath)
f_FileExists = ((fileAttr And vbDirectory) = 0)
Exit Function
ErrHandler:
f_FileExists = False
End Function<例1:ファイルの存在を確認する>
If 部品_ファイル存在チェック("E:\TEST\売上.xlsx") = False Then
MsgBox "ファイルが見つかりません"
Exit Sub
End If
<例2:別名保存の前に、同名のファイルがあるか確認する>
If 部品_ファイル存在チェック("E:\TEST\売上_保存.xlsx") Then
MsgBox "同名のファイルが既にあります"
Exit Sub
End If
※ パスが空文字・ワイルドカード入りの場合は、False ではなく、原因を示すエラーで止まる
(起点の On Error で受けて、Err.Description を表示する) 1.0
2026-10-27