Excel VBA入門 | FileSystemObject-FileExistsメソッド(ファイルの存在確認)

Excel VBA入門

公開日:2017年5月26日

FileSystemObjectオブジェクトは、Windowsスクリプトテクノロジの1つであるScriptランタイムに属したオブジェクトです(Excel VBA上ではScriptingのメンバに位置づけされています)。

ここでは、ファイルが存在するかどうかを確認する方法としてFileSystemObjectオブジェクトのFileExistsメソッドを使用する方法を解説します。

FileSystemObject-FileExistsメソッド(ファイルの存在確認)【Excel VBA入門】
目次

1.基本形

FSO.FileExists(FileName) →True/False

FSO:FileSystemオブジェクト変数。FileSystemオブジェクトとして宣言して格納した変数です。
FileName:ファイル名。カレントフォルダ内にないファイルの存在を確認するには、絶対パスを指定します。

ファイルが存在すればTrueを、存在しなければFalseを返します。

2.使用例

次の例では、デスクトップ上にTest.txtファイルが存在するかどうか確認してTrueまたはFalseをメッセージ表示します。

Sub ファイルの存在を確認する()

Dim FSO As New FileSystemObject '(1)
'変数FSOは例示。自由に設定してください。
Dim buf As String

buf = FSO.FileExists("C:\Users\ユーザー名\Desktop\Test.txt") '(2)
'ユーザー名はあなたのPC環境に合わせて書き換えてください。

MsgBox buf

End Sub

【解説】

(1)「Dim FSO As New FileSystemObject」
→FileSystemObjectオブジェクトを使用する際のおまじないです。FileSystemObjectオブジェクト変数FSOの宣言と変数FSOにFileSystemObjectオブジェクトの参照を代入しています。

おまじないには事前バインディングと実行時バインディングがありますが、ここでは事前バインディングを使用しています。

なお、FileSystemObjextオブジェクトを使用する場合には前もって、参照設定で「Microsoft Scripting Runtime」を有効にしておきます。

※FileSystemObjectオブジェクトの設定は「Excel VBA入門 | FileSystemObjectオブジェクト(概要)」を参照ください。

(2)buf = FSO.FileExists("C:\Users\ユーザー名\Desktop\Test.txt")
→デスクトップ上に「Test.txt」ファイルが存在するかどうかの結果をString型の変数bufに代入しています。

ファイル名はカレントフォルダであれば、ファイル名だけで済みますが、ここでは絶対パスを指定しています。

3.Dir関数を使用したプログラミングとの比較

ファイルの存在確認はDir関数を使用してもプログラム可能です。

ファイルの存在確認だけが必要であれば、Dir関数を使用したプログラミングを採用すれば事足ります。わざわざFileSystemObjectオブジェクトのおまじないなど必要としません。

しかし、ファイルの存在確認以外にもファイル操作(移動、削除、編集)やドライブ、フォルダ操作も行うプログラムを書く場合には、これら一連の操作が可能であるFileSystemObjectオブジェクトを採用した方がプログラミングしやすくなります。この場合には、ファイルの存在確認はFileExistsメソッドを使用した方がコードが見やすくなります。