@kp57
Tak tedy na popud eLCHa ještě jeden.
A ten první nefachčí, nebo co? Mně se teda líbí.
Pokud ten můj půlnoční výkřik ze tmy vyzněl jako kritika, tak to nebyl záměr. Pokud ten kód dělá to co má, tak je to v pořádku. A pokud se Vám navíc líbí, co více si přát? ;)))
Přišlo mi zbytečné vytvářet dávku a tak jsem na to upozornil.
Váš následující kód je zhruba to, co bych napsal já, jen je tam na můj vkus moc proměnných. A určitě bych tam nedával DoEvents (proč tam je? proč pouštět další události do běhu kódu?)
Vlastně jsem to zkusil napsat téměř úplně bez proměnných - ale pokud jsem chtěl použít fci Dir, tak to neprošlo. Musím načíst seznam adresářů. Ale je to úloha, u které lze využít proceduru, která volá sama sebe.
Jen pro ukázku - výpis souborů pdf včetně podsložek - na tom jsem to testoval. Aby vyhovělo zadání, už bych jen změnil typ souboru, v první proceduře otevřel ty dva zdroje a místo Debug.Print ve druhé bych dal - Open, Save, Close.
Sub subListFiles()
Call subCreateList("V:\TISKY PDF\SAP", ".pdf")
End Sub
Sub subCreateList(ByVal sFolder As String, ByVal sFileType As String)
sFolder = sFolder & IIf(Right(sFolder, 1) = "\", vbNullString, "\")
Dim sFolders() As String
ReDim sFolders(0)
Dim vVal As Variant
vVal = Dir(sFolder, vbDirectory)
While Not vVal = vbNullString
If Not vVal Like ".*" Then
If GetAttr(sFolder & vVal) = vbDirectory Then
If Not sFolders(0) = vbNullString Then
ReDim Preserve sFolders(UBound(sFolders) + 1)
End If
sFolders(UBound(sFolders)) = sFolder & vVal
Else
If vVal Like "*" & sFileType Then
Debug.Print sFolder & vVal
End If
End If
End If
vVal = Dir
Wend
If Not sFolders(0) = vbNullString Then
For Each vVal In sFolders
Call subCreateList(vVal, sFileType)
Next vVal
End If
End Subcitovat