りゅう
はじめに
ファイルを取り扱うプログラムを書く場合、必ずファイルの存在チェックを実施しましょう。
FileSystemObjectのFileExistsメソッドを使用するのがオススメです。
具体的な使用方法を解説しますので、ぜひ最後までお付き合いください。
この記事を読むメリット
- ファイルの存在チェックの方法が分かります。
- 類似機能であるDir関数との違いを解説します。
めい
結論だけ知りたい方は、目次からサンプルコードの章をクリックしてください。
FileSystemObject FileExistsメソッド
ファイルの存在チェックは、FileSystemObjectのFileExistsメソッドを使用します。
構文
構文
FileSystemObject.FileExists(filespec)
引数
# | 引数 | 必須 | 詳細 |
1 | filespec | ○ | 調べたいファイルパスをフルパスで指定します。 |
戻り値
- ファイルが存在する場合:True
- ファイルが存在しない場合:False
サンプルコード
前提
以下のようなファイル構成であることが前提として解説していきます。
ファイル存在チェック
サンプルコード
マクロ本体と同列のフォルダに配置されている、「vba-hack.txt」ファイルの存在をチェックするサンプルコードです。
サンプルコード
Public Sub checkFileExist()
Dim FSO As Object ' FileSystemObject
Dim filePath As String ' チェック対象ファイルパス
' FileSystemObjectインスタンス生成
Set FSO = CreateObject("Scripting.FileSystemObject")
' ファイルパス生成
filePath = ThisWorkbook.Path & "\vba-hack.txt"
If FSO.FileExists(filePath) Then
' ファイルが存在する場合
MsgBox "ファイルが存在します。", vbInformation
Else
' ファイルが存在しない場合
MsgBox "ファイルが存在しません。", vbInformation
End If
End Sub
Dir関数の使用を推奨しない理由
本記事では、FileSystemObjectのみをご紹介していますが、Dir関数でも同じチェックが可能です。
ただしDir関数では、「\\」から始まるネットワークドライブの検索ができません。
従いまして、今回はFileExistsメソッドのご紹介をいたしました!
最後に
いかがでしたでしょうか。
予期せぬエラーを発生しないためにも、ファイルの存在チェックは必ず実施してください!
この記事が、読者さまのお力になれれば嬉しいです!
コメント