VBA EXCEL&VBA

VBAでファイルの存在をチェックする|Excel VBA

今回は、VBAでフォルダ内の ファイルの存在をチェックする 方法です。

例えば、フォルダ内の任意のファイルを開こうとするとき、いきなり「Workbooks.Open~~」で書き始めてしまってはファイルが存在しないときにエラーになってしまいます。

エラーを回避するためには、まずファイルの存在を調べる処理を入れておく必要があります。



ファイル存在チェック

シンプルに任意のファイルを開く場合の記述としては;

Sub Open_Workbook()
  Workbooks.Open ( "C:¥temp¥サンプル.xlsx " )
End Sub

のようになります。

「C:¥temp¥」の部分を省略してしまうと、カレントフォルダを探してしまいます。
しっかりとフルパスで入力しておくことをおすすめします。

また、ファイルの場所をエクセルシートのセルに入力しておいて、その値を参照させることも可能です。

Sub Open_Workbook2()
  Workbooks.Open ( ActiveSheet.Range("A1").Value )
End Sub

▲セルA1にファイルのフルパスが記入されている場合

ただし、いずれの場合もファイルがそのフォルダに存在していなければエラーになってしまいます。


Dir関数でファイルの存在を判定する

Dir関数

ファイルが存在しないことによるエラーを回避するためには、事前に「ファイル存在チェック」を行って、ファイルが存在する場合だけ Workbooks.Open を実行させます。

ここで使用するのが Dir関数 です。
Dir関数による ファイル存在チェック を組み込むと以下のようになります。

Sub Open_Workbook3()
  If Dir ( "C:¥temp¥サンプル.xlsx " ) <> "" Then
    Workbooks.Open ( "C:¥temp¥サンプル.xlsx " )
  Else
    MsgBox "ファイルが存在しません"
  End If
End Sub

ファイルが存在しない場合は、メッセージを表示させることによってエラーを処理します。

『VBAでファイルの存在をチェックする』は以上です。
他の関連記事と合わせて仕事や趣味に役立ててください。


関連記事・広告



併せて読んでおくとさらに便利

VBAで最終行を取得する方法と そこからできること|Excel VBA
VBA・最終行
VBAで最終行を取得する方法を解説。最終行の行番号を取得できることにより最終行の削除や、最終行までセルを選択したり繰り返したり色々なことが可能になります。

VBAでシート数を取得する方法と そこからできること|Excel VBA
VBA・Countプロパティ
VBAでシート数を取得する方法の解説。VBAを使って各シートに同じ作業をさせる場合は流動的に変化するシート数を取得しておく必要があります。Countプロパティを使って...

VBA カレントフォルダの取得と設定・変更|Excel VBA
VBA・CurDir関数
VBAで カレントフォルダ名 を取得したり、設定(指定)したり変更(移動)したりする方法について解説します。CurDir関数 や ChDirステートメント などの使い方についても触れています。

VBAで空白行を削除する方法|Excel VBA 高速技
VBA・Unionメソッド
VBAを使って空白行の削除方法を解説します。Unionメソッド を使用して空白行を高速で一括削除する方法をサンプルコード付きで解説。ぜひ参考にしてください。

VBA フォルダ内のファイル名一覧の取得|EXCEL VBA
VBA・一覧取得
VBAでフォルダ内のファイル名の一覧を取得する方法を解説。フォルダの中の複数ファイルを自動でひとつずつ展開しながら 連続処理をさせたいときに使える超便利テク!

VBA「フォルダ選択」ダイアログを表示させる|Excel VBA
VBA・ダイアログボックス
VBAを使って「フォルダ選択」をさせる ダイアログボックス を表示させ、ユーザーが選択した フォルダ名 を含むPathを テキストボックスに表示させる方法について解説します。

VBA [ファイルを開く] ダイアログボックスを表示させる|EXCEL VBA
VBA・ダイアログボックス
VBAで [ファイルを開く] ダイアログ ボックスを表示させ、選択したファイル名をテキストボックスに表示させるまでを解説。GetOpenFilenameメソッドを、使用例もサンプルコードを公開しています。

※その他、関連記事はこの記事の下の方にもあります。




-VBA, EXCEL&VBA
-,