Excel VBA:ファイルとフォルダの存在確認|Dir関数を使用

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




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

ファイルかフォルダが存在しているどうか確認するにはDir関数を使います。

Dir関数とは、指定した属性と一致するファイルまたはフォルダの名前を返す関数です。

もし一致するファイルまたはフォルダが見つからなければ、長さ0の文字列("")が返ります。

長さ0の文字列("")が返れば存在しないと判定します。


Dir関数の構文

Dir [ (pathname, [ attributes ] ) ]

戻り値:文字列型で返ります。

  • PathName:(省略可)ファイル名・フォルダ名を指定します。ワイルドカードが使用できます。
  • attributes:(省略可)取得するファイル・フォルダの属性を指定します。

引数attributesの定数

定数 内容
vbNormal 0 (既定値)標準ファイル
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システムファイル(Windowsのみ)
vbVolume 8 ボリュームラベル(Windowsのみ)
vbDirectory 16 フォルダ
vbAlias 64 エイリアスファイル(Macintoshのみ)

関連する「Dir フォルダ内のファイルを取得するExcel関数」を掲載していますので参照してください。




ファイルかフォルダが存在しているどうか確認するVBAコード


ExcelシートとVBA入力画面

下画像のように、CommandButton1とCommandButton2の2つのボタンをシートに配置します。

Excelシート

それぞれのコマンドボタンクリックイベントのコードと、ExDirプロシージャを下記のように入力します。

VBA入力画面

VBAコードの解説

CommandButton1のクリックイベント

  1. BMPファイルとvbNormal(標準ファイル)を引数にして、ExDirプロシージャを呼び出します。
    vbNormalを指定することでファイルの存在確認ができます。
  2. ExDirプロシージャからの戻り値が長さ0の文字列("")でなければ、コマンドボタンに「有り」と表示します。 戻り値が長さ0の文字列("")の場合、コマンドボタンに「無し」と表示します。

CommandButton2のクリックイベント

  1. フォルダ名とvbDirectory(フォルダ)を引数にして、ExDirプロシージャを呼び出します。
    vbDirectoryを指定することでフォルダの存在確認ができます。
  2. ExDirプロシージャからの戻り値の処理は、CommandButton1と同じです。

ExDirプロシージャ

  1. 1番目の引数のファイル名かフォルダ名が指定されているかチェックします。
  2. もし指定されていなければ、長さ0の文字列("")を返します。
  3. On Error Resume Nextでエラーを無視します。
  4. エラー番号を初期化します。 Dir関数を実行します。
  5. エラーが発生したかどうかチェックします。
    エラーチェックの理由は、Dir関数の引数のパス名がおかしい場合などにエラーが発生し、プログラムが停止するのを防止するためです。
  6. もしエラーが発生していれば、長さ0の文字列("")を返します。

※ 実際に使用する場合は、引数の指定がおかしい場合や、エラーが発生した場合などは何か特別の文字列を返すようにし区別できるようにしてください。


ExcelシートのVBAコード

Option Explicit

'Excel VBAでファイル、フォルダの存在確認
Private Function ExDir(sName As String, nAttr As Integer) As String
    If sName = "" Then
        ExDir = ""
        Exit Function
    End If
On Error Resume Next
    Err.Number = 0
    ExDir = Dir(sName, nAttr)
    If Err.Number <> 0 Then
        ExDir = ""
    End If
On Error GoTo 0
End Function

Private Sub CommandButton1_Click()
    'ファイルの存在確認
    If ExDir("C:\windows\隅田川.bmp", vbNormal) <> "" Then
        CommandButton1.Caption = "有り"
    Else
        CommandButton1.Caption = "無し"
    End If
End Sub

Private Sub CommandButton2_Click()
    'フォルダの存在確認
    If ExDir("C:\windows\", vbDirectory) <> "" Then
        CommandButton2.Caption = "有り"
    Else
        CommandButton2.Caption = "無し"
    End If
End Sub


実行したExcelシート

CommandButton1のファイル存在確認の結果は「無し」、CommandButton2のフォルダ存在確認の結果は「有り」と表示されています。
実行したExcelシート


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

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


Copyright (c) Excel-Excel ! All rights reserved