Excel

【Excel】VBAマクロでフォルダの存在チェック・確認(複数も)し、なければ作成や削除(あれば)などする方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、Excel VBAマクロを使ってフォルダの存在をチェックし、必要に応じてフォルダを作成または削除する方法について解説していきます。

ポイントとしては、`MkDir`、`Dir`、そして`FileSystemObject`の三つの関数を使用することです。

解説では初心者にもわかりやすく、変数名を日本語のローマ字表記で示しています。これにより、コードの理解がより容易になります。それでは、VBAの魅力に触れながら詳しく見ていきましょう!

VBAマクロで指定フォルダ(ディレクトリ)の存在チェックをし無ければその名前で作成、あれば末尾に連番をつけて作成する方法

それではまず、指定フォルダの存在チェックと条件に応じたフォルダ作成について解説していきます。

フォルダが存在しない場合に新しいフォルダを作成し、存在する場合は新しい名前でフォルダを作成するのに役立ちます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub FolderExistenceCheckAndCreate()
    Dim targetFolder As String
    targetFolder = "C:\YourFolderPath" ' 目的のフォルダパスを設定
    Dim folderName As String
    folderName = Dir(targetFolder, vbDirectory) ' フォルダの存在チェック

    If folderName = "" Then
        MkDir targetFolder ' フォルダが存在しない場合、作成
    Else
        Dim counter As Integer
        counter = 1
        Do While folderName <> ""
            folderName = Dir(targetFolder & "_" & counter, vbDirectory)
            counter = counter + 1
        Loop
        MkDir targetFolder & "_" & counter ' 存在する場合、連番で新しいフォルダを作成
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面でFolderExistenceCheckAndCreate関数を実行します。

このコードでは、まず目的のフォルダパスを指定します。`Dir`関数を使用してそのフォルダが存在するかをチェックし、存在しなければ`MkDir`を使って新しいフォルダを作成します。

もし既に存在する場合は、連番を使って新しい名前のフォルダを作成します。

 

VBAマクロで一つ上の階層のフォルダをダイヤログで指定し、その中に複数のフォルダの存在チェックをし、あれば削除、無ければスルーする方法

続いては、一つ上の階層のフォルダを指定し、その中で複数のフォルダの存在チェックを行い、条件に応じて削除またはスルーする方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub CheckAndDeleteFolders()
    Dim folderPath As String
    folderPath = GetFolder("C:\") ' ダイアログでフォルダを選択

    Dim folderToCheck As String
    folderToCheck = folderPath & "\*" ' チェックするフォルダのパス

    Dim folderName As String
    folderName = Dir(folderToCheck, vbDirectory) ' 最初のフォルダ名を取得

    Do While folderName <> ""
        If (GetAttr(folderPath & "\" & folderName) And vbDirectory) = vbDirectory Then
            Kill folderPath & "\" & folderName ' フォルダが存在すれば削除
        End If
        folderName = Dir() ' 次のフォルダ名を取得
    Loop
End Sub

Function GetFolder(defaultFolder As String) As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = defaultFolder
        .Show
        If .SelectedItems.Count > 0 Then
            GetFolder = .SelectedItems(1)
        End If
    End With
End Function

コードのAlt+F8を押し、マクロ選択画面でCheckAndDeleteFolders関数を実行します。

このコードでは、最初にダイアログを使用してフォルダを選択します。

その後、指定されたフォルダ内のすべてのフォルダをチェックし、存在するフォルダを削除します。これにより、不要なフォルダの整理が簡単に行えます。

まとめ

この記事では、VBAマクロを使用してフォルダの存在チェックと自動操作を行う方法について解説しました。`MkDir`、`Dir`、`FileSystemObject`といった関数を駆使して、効率的なファイル管理を実現しましょう!