こんにちは、Ryoです。
VBAを扱う中でファイル操作は常々発生しますが、その中でファイルの存在を調べたいことが多々あるかと思います。その場合はFileExistsメソッドを使用することで調べることが出来ますので、その方法について書いていきます。
1.サンプル概要
サンプルとしてデスクトップに「Sample」という名前のフォルダを作成し、そのフォルダ内に「Sample1,Sample2,Sample3.xlsx」というファイルがあるとします。
このフォルダを指定し、ファイル「Sample1.xlsx」が存在する場合はメッセージ表示後にファイルを開き、存在しない場合はその旨をメッセージで表示します。
2.サンプルコード
Sub Sample1() Dim FSO As Object Dim Tgt As String 'FileSystemObjectオブジェクトを生成 Set FSO = CreateObject("Scripting.FileSystemObject") '存在を調べたいファイル名をフルパスで指定し変数に代入 Tgt = "D:\デスクトップ\Sample\Sample1.xlsx" If FSO.FileExists(Tgt) Then 'ファイルが存在する場合の処理 MsgBox Tgt & "が見つかりましたので、ファイルを開きます" Workbooks.Open Tgt Else 'ファイルが存在しない場合の処理 MsgBox "ファイルが存在しません", vbCritical End If End Sub
ファイル操作を行うので、ここではファイルシステムオブジェクト(FileSystemObject)、CreateObject関数を使用します。この場合は引数に「Scripting.FileSystemObject」が必要なので、記述としては、このようになります。
Set FSO = CreateObject(“Scripting.FileSystemObject”)
これでFSOオブジェクトが作成されます。この辺りの詳細を書くと長くなるのと本題から反れるので割愛しますが、簡単に言うとフォルダやファイルなどを操作できるオブジェクトということです。
次に変数へ調べたいファイル名をフルパスで代入し、FileExistsメソッドにて存在有無を確認します。
オブジェクト.FileExists(フルパスでのファイル名)
構文はこの通りで存在する場合はTrue、存在しない場合はFalseが返ってきますから、If文で条件分岐させて各処理を行っています。
If文の処理はTrue(有り)だったらメッセージ&指定ファイルをWorkbooks.Open Tgtで開き、False(無し)であればメッセージにて存在しないことを表示します。
3.まとめ
ファイルやフォルダの存在を確認する場合、他にDir関数を使う方法もありますので用途や環境によって使いやすさも様々ですから、本サンプルは一例として見ていただければと思います。
ファイルやフォルダを開く際に存在を確認する処理を入れておけば不要なエラーを防げますから知っておくと何かと有用だと思いますので、機会ありましたら活用をご検討くださいませ!
以上、ファイルの存在を確認する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo