Excel VBA:Windows APIを使ったファイル・フォルダの存在確認|PathFileExists

Windows APIのPathFileExistsを使用し、ファイルかフォルダが存在しているどうか確認するVBAコードを掲載しています。



Homeに戻る > Excel ファイル操作のTipsへ

前回、Dir関数を使用したファイルとフォルダの存在確認を行うVBAを掲載しましたが、ここではWindows APIのPathFileExistsを使用したVBAを紹介します。

ファイルとフォルダの存在確認はファイル操作をするアプリでは、エラー回避のためによく使用するので役立つかと思います。

PathFileExistsの構文

Declare Function PathFileExists Lib "SHLWAPI.DLL" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

pszPath:チェック先のファイル又はフォルダを指定します。

戻り値:存在する場合は1が返り、それ以外の場合は0が返ります。



Windows APIを使用し、ファイルかフォルダが存在しているどうか確認するVBAコード

ExcelシートとVBA入力画面

下画像のように、CommandButton1とCommandButton2の2つのコマンドボタンをシートに配置しています。
2つのコマンドボタンをシートに配置した画面

Declare FunctionでWindows APIのPathFileExistsを宣言し、コマンドボタンそれぞれのクリックイベントにVBAコードを入力します。
入力したVBAコード

VBAコードの解説

CommandButton1のクリックイベント

  1. 引数にBMPファイルを指定し、PathFileExistsを呼び出します。
  2. もしBMPファイルが存在していれば、コマンドボタンに「有り」と表示します。
  3. もし存在していなければ、コマンドボタンに「無し」と表示します。

CommandButton2のクリックイベント

  1. 引数にフォルダを指定し、PathFileExistsを呼び出します。
  2. もしフォルダが存在していれば、コマンドボタンに「有り」と表示します。
  3. もし存在していなければ、コマンドボタンに「無し」と表示します。

ExcelシートのVBAコード

Option Explicit

'戻り値
'ファイルが存在するとき: 1
'ファイルが存在しないとき: 0
Private Declare Function PathFileExists Lib "SHLWAPI.DLL" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

Private Sub CommandButton1_Click()
    'ファイルの存在確認
    If PathFileExists("C:\test\隅田川.bmp") = 1 Then
        CommandButton1.Caption = "有り"
    Else
        CommandButton1.Caption = "無し"
    End If
End Sub

Private Sub CommandButton2_Click()
    'フォルダの存在確認
    If PathFileExists("C:\test\") = 1 Then
        CommandButton2.Caption = "有り"
    Else
        CommandButton2.Caption = "無し"
    End If
End Sub


実行したExcelシート

BMPファイルとフォルダが共に存在していれば、コマンドボタンに「有り」と表示されます。
BMPファイルとフォルダが共に存在していた場合の画面

BMPファイルとフォルダが共に存在していなければ、コマンドボタンに「無し」と表示されます。
BMPファイルとフォルダが共に存在していない場合の画面



Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved