VBA:ファイルやフォルダの有無チェック
そこでここではファイルやフォルダの有無チェックの方法について説明していきます。
◆ファイルの有無チェック「Dir」利用の場合
ファイルの有無を調べるにはDir関数を使った方法が単純な気がします。
以下の1つのコードの結果で判断できます。
1 |
Dir(FilePath) |
Dir関数は指定したファイルのパスに対象ファイルが存在するかどうかを判定し、ある場合はファイル名を戻します。
指定したパスにファイルがない場合は「空欄」を返します。パスが「空欄」の場合にDirを使うとエラーになるので、パスが「空欄」の場合の処理を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub ファイルの有無() Dim FilePath As String FilePath = "C:\Users\サンプル1.xlsx" 'Excelならセル、Accessならフォームの値などのパスを入れるようにしてもいい。' If Dir(FilePath) = "" Or FilePath = "" Then MsgBox "ファイルなし" Else MsgBox "ファイルあり" End If End Sub |
◆ファイルの有無チェック「FileSystemObject」利用の場合
ファイルの有無をチェックする際には、「FileSystemObject」を使います。
これはファイルの移動、コピー、削除、ファイルやフォルダの有無チェック、ファイルやフォルダのパスの取得などができます。
以下ではファイルがあれば、Functionプロシージャ(ここではFileExistCheck)をTrueで返し、なければFalseで返します。
1 2 3 4 5 6 7 8 9 10 11 12 |
'//ファイルの有無チェック' Sub ファイルの有無() Dim FilePath As String FilePath = "C:\Users\・・・・\sample.xlsx"'ファイル名までのパスを入れる' MsgBox IsFile(FilePath) '存在すればtrueが返ります' End Sub '*******************************************************' 'Functionで作っておけば使いまわせるので汎用性は高い。' Function IsFile(ByVal chkFilePath As String) As Boolean IsFile = CreateObject("Scripting.FileSystemObject").FileExists(chkFilePath) End Function |
◆フォルダの存在チェック「FileSystemObject」利用の場合
フォルダの存在をチェックする際にも、「FileSystemObject」を使います。
ここではフォルダがあればFunctionプロシージャ(ここではchkFolderExist)をTrueで返し、なければFalseで返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'//フォルダの存在チェック' Sub フォルダの有無() Dim FolderPath As String FolderPath = "C:\Users\・・・・" 'チェックするフォルダのパスを入れる' MsgBox IsFolder(FolderPath) '存在すればtrueが返ります' End Sub '*******************************************************' 'Functionで作っておけば使いまわせるので汎用性は高い。' Function IsFolder(ByVal chkFolderPath As String) As Boolean IsFolder = CreateObject("Scripting.FileSystemObject").FolderExists(chkFolderPath) End Function |
◆フォルダの作成
フォルダがなかった場合は、フォルダを作成することもできます。
以下の記事に書きましたのでご覧ください。