FileExists について

Excel VBAを使用した場合、ExcelファイルのOpenはWorkbooksオブジェクトで行うので、FileSystemObjectでよく使用するのは、ファイルの存在確認を行うFileExistsメソッドかも知れません!

■FileExistsメソッド

広告

先にも書きましたが、ファイルの存在を確認するメソッドです

・構文

構文は以下の通りです

object.FileExists(filespec)

objectはFileSystemObjectのオブジェクトです

・パラメータ

メソッドのパラメータは以下の通りです

  • filespec … 存在を確認するファイルパス

存在確認を行うファイルのフルパスを指定します(相対パス、もしくは絶対パスにて指定可能)

・戻り値

メソッドの戻り値は以下の通りです

  • True … ファイルが存在する
  • False … ファイルが存在しない

パラメータで指定したファイルが存在する場合はTrueを返し、存在しない場合はFalseを返します

■例

広告

・簡単なサンプル

①FileExistsのサンプル

Function FileExists_Sample(filespec As String) As Boolean
    Dim obj     As FileSystemObject
    Dim ret     As Boolean
	
    ' オブジェクトを作成
    Set obj = New FileSystemObject
	
    ' ファイルの存在確認
    ret = obj.FileExists(filespec)
	
    ' オブジェクトを破棄
    Set obj = Nothing
	
    ' 結果を返す
    FileExists_Sample = ret
	
End Function

②呼び出し元関数のサンプル

Sub CallFileExists_Sample()
    Dim filespec	As String
	
    ' 調べたいファイルパス
    filespec = "E:\VBA\Sample001\Sample.txt"
	
    ' 作成した関数を呼び出す
    If (FileExists_Sample(filespec) = True) Then
        ' 戻り値がTrueなら存在する
        Debug.Print "ファイルは存在します"
		
    Else
        ' 戻り値がTrue以外(False)なら存在しない
        Debug.Print "ファイルは存在しません"
		
    End If
	
End Sub

③簡略化したFileExistsのサンプル

Function FileExists_Sample2(filespec As String) As Boolean
    ' オブジェクトを作成
    With New FileSystemObject
        ' ファイルの存在確認結果を返す
        FileExists_Sample2 = .FileExists(filespec)
		
    End With
	
End Function

・説明

FileSystemObject型の変数でオブジェクトを作成しないといけませんので、関数化して呼び出すのが便利かと思います

ガッツリ書くのであれば、①の方式で書いて、エラートラップや以下の引数チェックをやるのも良いかも知れません

  • 空文字ではないか?
  • ファイルパス形式か?

簡略化したい場合は、③のようにすればかなりスッキリします!(まぁ、素敵w)

②は呼び出し元ですが、①も③もどちらを呼んでも同じ結果になります!(そりゃそうですねw)

・注意点

特にないのですが、根本的なことなので個々のメソッドで書く必要はないのですが、以下に注意です

  • FileSystemObjectのオブジェクトを作成する場合は、NewでSetしてください!
  • 特に③を使用する場合、Newを書き忘れてもVBA的にはコーディングエラーではなく、実行時エラーになりますのでご注意ください
  • エラートラップやパラメータチェックについては、お任せしますw

・その他

関数の呼び出し毎にFileSystemObjectのオブジェクトを作成したくない人は、標準モジュールではなくクラスモジュールでクラス化してください

  • Class_InitializeイベントでNew FileSystemObject
  • Class_TerminateイベントでNothing

よく使いそうなメソッドについては、個別にサンプルを作っていこうと思います!

ではでは

広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする