Excel VBA入門 | FileSystemObject-FileExistsメソッド(ファイルの存在確認)
公開日: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メソッドを使用した方がコードが見やすくなります。
10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。
PC・ITカテゴリーの対象数は7,000以上。
スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。
関連記事
書籍には載っていないことにも言及してコメント
開発者の本音コメント
様々な視点でVBAの難易度をコメント
他のプログラミング言語との違いや日本情勢にも言及して解説