エクセル FileSystemObject を使ってファイルの存在(有無)をチェックする(Excel VBA)

【本日のミッション】

エクセルで FileSystemObject を使ってファイルの存在(有無)をチェックせよ。

ミッションの概要

エクセルで FileSystemObject を使ってファイルが存在するかどうかをチェックせよ、というのが今回のミッションです。

(参考:エクセル Dir関数 を使ってファイルの存在(有無)を確認する(Excel VBA)


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

ファイルの準備とプロシージャ

Excelマクロ有効ブック(.xlsm)のファイルを新規作成します。

そのファイルのシートに下記の通り、ファイルパスを指定するセル(A3)を準備します。

ファイルパスには、存在を確認したいファイルのフルパスを入力します。

このシートをアクティブにした状態で、Alt+F11でVsual Basic Editerを起動します。

[挿入]-[標準モジュール]で新規モジュールを作成し、下記の通りコードを記入します。

Sub ファイルの有無を確認()
    '【変数】
    Dim ws As Worksheet '処理対象シート
    Dim fn As String    'ファイルパス
    Dim FSO As Object   'FileSystemObject
    
    '■変数セット
    Set ws = ActiveSheet    '変数ws=アクティブシートをセット
    fn = ws.Range("A3")     'ファイルパス
    Set FSO = CreateObject("Scripting.FileSystemObject") 'FileSystemObject

    '■ファイル存在確認
    If FSO.FileExists(fn) Then
        MsgBox "ご指定のファイル「" & fn & "」は存在します!"
    Else
        MsgBox "ご指定のファイル「" & fn & "」は存在しません。"
    End If

    '■変数の解放
    Set FSO = Nothing
End Sub  

「Sub ファイルの有無を確認() 」プロシージャのどこかにカーソルを置いてF5キーをクリックしてください。

ファイルが存在する場合は、「ご指定のファイル「〇〇〇」は存在します!」と表示されます。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

ファイルが存在しない場合は、「ご指定のファイル「〇〇〇」は存在しません。」と表示されます。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

■■■スポンサーリンク■■■

FileSystemObject

ファイルやフォルダは、セルやシートと違って、Excel上には存在しない外部オブジェクトです。

Excelでは、「FileSystemObject」というオブジェクトを使って、ファイルやフォルダを操作する(作成、削除、移動、コピー等)ことができます。

FileSystemObject」を使用するには、下記の何れかの方法で準備をする必要があります。

  • CreateObject 関数を利用する方法
  • 参照設定を利用する方法

今回はCreateObject 関数を利用します。

【FileSystemObjectについて参考ページ】
FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止

【Dir関数を使ってファイルの存在(有無)をチェックする方法はコチラ↓】
エクセル Dir関数 を使ってファイルの存在(有無)を確認する(Excel VBA)

CreateObject関数

CreateObject関数を利用することで、FileSystemObjectを使うことができるようになります。

【CreateObject 関数の利用方法】

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

***変数「FSO」を利用した処理***

Set FSO = Nothing
  1. まず、変数「FSO」をObjectとして宣言します。
    参照設定をしていないので、「FileSystemObject」への宣言はできません。

    Dim FSO As Object

  2. 次に、CreateObject関数を利用して、変数「FSO」にFileSystemObjectをセットします。

    Set FSO = CreateObject(“Scripting.FileSystemObject”)


    この記述をすることで、変数「FSO」をFileSystemObjectとして使うことができます。

    例1:FSO.FileExists(ファイルパス)→ファイル存在の確認します。
    例2:FSO.GetFolder(フォルダパス)→フォルダー オブジェクトを返します。
     
  3. 処理の最後に、変数「FSO」を解放します。

    Set FSO = Nothing

FileExistsメソッド

指定したファイルが存在するかどうかを確認します。

FileSystemObject.FileExists(パスを含むファイル名)

引数(パスを含むファイル名)に指定したファイルが存在する場合は「True」を、存在しない場合は「False]を返します。

FSO.FileExists(fn)

変数「fn」に「C:\VBA\第1階層\File1_1.xlsx」というファイルパスがセットされている場合、「C:\VBA\第1階層\File1_1.xlsx」ファイルが存在する場合に「True」が返ります。

【参考】

指定したフォルダ内のファイル名全てを取得(Excel VBA)
変数でよく使われる「buf」「tmp」の意味
Dir関数が取得するファイルの順番
指定したフォルダ内のフォルダ名全てをGetAttrを使って「エラー53 ファイルが見つかりません。」を出さずに取得(Excel VBA)
GetAttrとは?「= vbDirectory」ではなく「And vbDirectory」となるビット演算の疑問
フォルダ名だけを取得したい時に出てくる 「.」 と 「..」 とは?
指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
CreateObject(“Scripting.FileSystemObject”) を使ってサブフォルダを取得
再帰処理とは?フォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
指定したフォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
再帰処理とは?フォルダ内のサブフォルダのフォルダ名を全部取得(Excel VBA)
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)
ファイルのフルパスからファイル名のみを取得 InStrRev関数(Excel VBA)
指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
FileSystemObjectとは?CreateObject 関数 FolderExists・GetFolderの使い方
FileSystemObject CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止
再帰処理とは?指定したフォルダの全ての階層のフォルダ名・サブフォルダ名・ファイル名を取得(Excel VBA)
ファイルのフルパスからファイル名のみを取得 Split関数(Excel VBA)
Callステートメントとは 引数 括弧()の使い方(Excel VBA)
指定したフォルダ内から「特定の文字を含まないファイル名」を取得(Excel VBA)
ワイルドカードとは。使い方いろいろ。(Excel)
Dir関数の使い方。ファイル名やフォルダ名の取得方法。(Excel VBA)
指定したフォルダのファイル名を取得し、そのファイル名を一括で変換(Excel VBA)
Excel起動時に「コンパイルエラー」。64ビット システムで Declareステートメントに、PtrSafe属性を設定(Excel VBA )
「ファイルを開く」ダイアログボックス から ファイル名を取得(Excel VBA)
「ファイルを開く」ダイアログボックス から 複数 ファイル名を取得(Excel VBA)
指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)
再帰処理とは?指定フォルダ内のサブフォルダ全てをフォルダ構成のみ(空フォルダ)を別フォルダにコピー(Excel VBA)
エクセル Dir関数 を使ってファイルの存在(有無)をチェックする(Excel VBA)
エクセル FileSystemObject を使ってファイルの存在(有無)をチェックする(Excel VBA)

■■■スポンサーリンク■■■