Code:
Option Explicit
Public Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
Public Function GetFiles(Path As String) As String()
Dim Files() As String
Dim Item As String
If Not Right$(Path, 1) = "\" Then Path = Path & "\"
Path = Path & "*.*"
Item = Dir$(Path, vbArchive Or vbHidden Or vbReadOnly Or vbSystem)
Do Until Item = vbNullString
If SafeArrayGetDim(Files()) = 0 Then
ReDim Files(0 To 0) As String
Else
ReDim Preserve Files(LBound(Files()) To UBound(Files()) + 1) As String
End If
Files(UBound(Files())) = Item
Item = Dir$()
Loop
If SafeArrayGetDim(Files()) = 0 Then ReDim Files(0 To 0) As String
GetFiles = Files
End Function
Public Sub Main()
Dim Item As Variant
For Each Item In GetFiles("C:\Windows\System32")
Debug.Print Item
Next Item
End Sub