プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

VBA 任意のフォルダ内のファイル存在チェック(Excelファイル編)

■VBAで任意のフォルダ内のファイル存在をチェックする方法(Excelファイル編)
 


Sub Serch()

    //フォルダパスの変数を宣言
    Dim folderPath As String
    //Excelファイルを格納しているフォルダのフォルダパスを設定
    folderPath = "C:\Users\HOGEHOGE\Desktop\TARGET_FOLDER"
    
    //フォルダが存在するかを確認
    If Dir(folderPath, vbDirectory) = "" Then
        //フォルダが存在しない場合はメッセージを表示して処理を終了
        MsgBox "指定のフォルダが存在しない為、処理を終了します"
        End
    End If
    
    //ファイル名の変数を宣言
    Dim fileName As String
    //ファイル名を設定
    fileName = Dir(folderPath & "\*.xlsx")
    
    //フォルダ内にExcelファイル(拡張子:xlsx)が存在するかを確認
    If fileName = "" Then
        //ファイルが存在しない場合はメッセージを表示して処理を終了
        MsgBox "Excelファイルが存在しない為、処理を終了します"
    End If
    
    //フォルダ内のExcelファイル(拡張子:xlsx)が開いているかを確認
    Dim openFile As Workbook
    //開いているファイルを「Workbooks」コレクションで取得し、openFileに1つずつセット
    For Each openFile In Workbooks
        //フォルダ内のファイルを取得
        Do While fileName <> ""
            //開いているファイルがフォルダ内のファイルの場合はメッセージを表示して処理を終了
            If openFile.Name = fileName Then
                MsgBox fileName & "が開いています" & vbCrLf _
                   & "ファイルを閉じてから再度、マクロを実行してください"
                End
            End If
            //フォルダ内の次のファイルを取得
            fileName = Dir()
        Loop
        //ループが終わると「fileName」が空になるので、再度Dir関数でフォルダ内のファイルを取得
        fileName = Dir(folderPath & "\*.xlsx")
    Next

End Sub