
For i = 3 To lstrow
if not rows(i).hidden then
xdir = ...

Dim cell As Range
For Each cell In Selection
Barth(5.5.2022 10:13)citovat#052651 
S tím aktuálním výběrem (Selection) zkusit průsečík dvou oblastí (Intersect), zde pokus najít viditelné buňky (resp. neskryté řádky filtrem či manuálně) ve sloupci B počínaje třetím řádkem ...
Dim rng(1 To 3) As Range, c As Range
Set rng(1) = Selection
Set rng(2) = rng(1).Parent.Range("B3:B" & rng(1).Parent.Cells(1).CurrentRegion.Rows.Count).SpecialCells(xlCellTypeVisible)
Set rng(3) = Application.Intersect(rng(2), rng(1))
For Each c In rng(3).Cells
Debug.Print c.Value
Next
Snad to bude fungovat s libovolným výběrem ...
Barth(5.5.2022 10:37)citovat#052652 
Pokus vypsat z tabulky (na aktivním listu s levým horním rohem v buňce A1 a záhlavím v prvním řádku) názvy složek ze sloupce B, kde není složka ještě založena ...
Upřesnění konktétního listu, stávající oblasti tabulky a cestu k hlavnímu adresáři upravit dle vlastního uvážení.
Dim folder_names
Const folder_path As String = "C:\Users\User\Desktop\AMICOM"
Dim current_range As Range
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.Cells(1).CurrentRegion
If .Rows.Count > 0 And .Columns.Count > 0 Then
folder_names = Application.Transpose(.Columns("B").Offset(1).Resize(.Rows.Count - 1).Value)
End If
End With
Dim r As Long, new_items As New VBA.Collection
If Not IsEmpty(folder_names) Then
For r = LBound(folder_names) To UBound(folder_names)
'Debug.Print folder_names(r)
If Not Len(Dir(folder_path & Application.PathSeparator & folder_names(r), vbDirectory)) > 0 Then
new_items.Add folder_names(r)
End If
Next
End If
For r = 1 To new_items.Count
Debug.Print new_items(r)
'MkDir folder_path & Application.PathSeparator & cell_range.Value
Next

K plné spokojenosti ošetřeno následujícím kodem :
Sub VyvorSlozku_SUNSET_LIKEMA()
Dim xdir As String
Dim lstrow As Long
Dim i As Long
Dim cell As Range
lstrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
For Each cell In Selection
xdir = "E:\TEST\AMI\LIKEMA\" & cell.Value
On Error Resume Next
MkDir xdir
If Err.Number = 0 Then 'když existuje, jde dál
MkDir xdir & "\Podklady"
MkDir xdir & "\Výstavba"
End If
On Error GoTo 0
Next
End Sub
děkuji za pomoc

No hej, ale reálny rozdiel/prínos bude aký? Aj tak si makrom musí urobiť zoznam z vybranej oblasti, a keď už makro beží, rovno sa názov môže poslať ako parameter do MkDir. Namiesto toho aby som si niekde uložil zoznam a potom ho nakopíroval do BAT (alebo makrom vytvoril BAT súbor). Aký bude časový rozdiel vykonávania operácie (spomínaných 5 foldrov)? 0,01 sek v prospech BAT?

Pokud potřebuji opakovaně zakládat adresáře se zadanou strukturou, používám samozřejmě bat. Otevřu adresář a v něm spustím skript:
@echo off
chcp 1250 > nul:
if .%1.==.. (echo Není zadán adresář [nebo jiná zpráva] && goto konec)
mkdir .\%1 2> nul:
if errorlevel 1 (echo dir existuje && goto konec)
:: Do v závorce je seznam adresářů
for %%i in (Podklady AAA\Výstavba "X x x") do mkdir .\%1\%%i
echo hotovo
:konec
rem exit
Ve srovnání se skriptem v excelu je to o hodně rychlejší, a případná modifikace stromu adresářů je také velmi snadná.