Sub prcListSubfolders()
Dim dlgFolder As FileDialog ' フォルダ選択用のダイアログ
Dim strFolderPath As String ' 選択されたフォルダのパス
Dim fsoFileSystem As FileSystemObject ' ファイルシステムオブジェクト
Dim fldSelected As Folder ' 選択されたフォルダ
Dim fldSubfolder As Folder ' サブフォルダ
Dim wsTarget As Worksheet ' 出力対象のワークシート
Dim lngRow As Long ' 出力行番号
' ワークシート設定
Set wsTarget = ThisWorkbook.Sheets("フォルダリスト")
wsTarget.Range("A2:B" & wsTarget.Rows.Count).ClearContents ' 1行目以外をクリア
' ファイルダイアログの設定
Set dlgFolder = Application.FileDialog(msoFileDialogFolderPicker)
dlgFolder.Title = "フォルダを選択してください"
If dlgFolder.Show = -1 Then
strFolderPath = dlgFolder.SelectedItems(1)
Else
Exit Sub ' ユーザーがキャンセルした場合は処理を終了
End If
' FileSystemObjectの初期化
Set fsoFileSystem = New FileSystemObject
Set fldSelected = fsoFileSystem.GetFolder(strFolderPath)
' サブフォルダの情報をExcelに出力
lngRow = 2 ' 項目タイトルがあるため、2行目から開始
For Each fldSubfolder In fldSelected.SubFolders
wsTarget.Cells(lngRow, 1).Value = fldSelected.Path ' 親フォルダのパス
wsTarget.Cells(lngRow, 2).Value = fldSubfolder.Name ' サブフォルダ名
lngRow = lngRow + 1
Next fldSubfolder
' オブジェクトの解放
Set fsoFileSystem = Nothing
Set dlgFolder = Nothing
End Sub
コメント