0
0

VBAを使ってフォルダを再帰的に作成するマクロ

Posted at

VBAを使って、セル範囲に入力されたフォルダパスに従って再帰的にフォルダを作成するマクロを以下に示します。このマクロは、セルA1から最終行までの各セルの値を読み取り、その値に従ってフォルダを作成します。

Sub CreateFolders()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim cell As Range
    Dim folderPath As String
    
    ' シートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' A1から最終行までループ
    For Each cell In ws.Range("A1:A" & lastRow)
        folderPath = cell.Value
        
        If Len(folderPath) > 0 Then
            CreateFolderRecursively folderPath
        End If
    Next cell
    
    MsgBox "フォルダの作成が完了しました。", vbInformation
End Sub

Sub CreateFolderRecursively(folderPath As String)
    Dim subFolders As Variant
    Dim currentPath As String
    Dim i As Integer
    
    ' フォルダパスを分割
    subFolders = Split(folderPath, "\")
    
    ' ベースパスを設定
    currentPath = ""
    
    ' フォルダを順に作成
    For i = LBound(subFolders) To UBound(subFolders)
        currentPath = currentPath & subFolders(i) & "\"
        If Dir(currentPath, vbDirectory) = "" Then
            MkDir currentPath
        End If
    Next i
End Sub

説明

1.CreateFoldersマクロ:

wsで操作対象のワークシートを設定しています。lastRowでA列の最終行を取得しています。For EachループでA1から最終行までのセルを巡回し、セルの値をfolderPathに格納します。folderPathに値がある場合は、CreateFolderRecursivelyサブルーチンを呼び出してフォルダを作成します。

2.CreateFolderRecursivelyサブルーチン:

フォルダパスを「\」で分割し、各部分を順に結合してフォルダを作成します。MkDirを使用して、存在しないフォルダを作成します。このマクロをExcelのVBAエディタにコピーして実行することで、A列に指定されたフォルダパスに従ってフォルダを再帰的に作成できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0