日本語名

部品_ファイル存在チェック

英語名

FileExists

URL

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 を表示する)

BASファイル(ダウンロード)

FileExists.bas

バージョン

1.0

更新日

2026-10-27