Ciao Alessandro,
è un periodo un po' difficile per vari motivi e quindi con tempo ridotto, ma ti propongo una funzione che restituisce la matrice dei valori da te richiesti.
Questa matrice di valori poi la puoi assegnare a un intervallo, cosa che ti dovrebbe essere non impossibile viste le tue conoscenze.
La funzione è questa:
Function EstrapolaListeSchede() As Variant
Const sPercorsoRadice = "C:\ArchivioSchedeProdotti\"
Dim oFso As Object
Dim oFolder As Object
Dim oSubFolder As Object
Dim oFile As Object
Dim sFileNameNoExt As String
Dim sPrefisso As String
Dim sTesto As String
Dim sSuffisso As String
Dim sLink As String
Dim arrDati() As Variant
Dim cont As Long
Set oFso = CreateObject("Scripting.FileSystemObject")
With oFso
Set oFolder = oFso.GetFolder(sPercorsoRadice)
For Each oSubFolder In oFolder.SubFolders
For Each oFile In oSubFolder.Files
cont = cont + 1
sFileNameNoExt = .GetBaseName(oFile)
sPrefisso = Trim(Left(sFileNameNoExt, InStr(1, sFileNameNoExt, " ")))
sTesto = Trim(Mid(sFileNameNoExt, InStr(1, sFileNameNoExt, " "), 1 + Len(sFileNameNoExt) - InStr(1, sFileNameNoExt, " ") - InStr(1, sFileNameNoExt, " ")))
sSuffisso = Trim(Right(sFileNameNoExt, Len(sFileNameNoExt) - InStrRev(sFileNameNoExt, " ")))
sLink = Replace(oFile, oFile.Name, "")
ReDim Preserve arrDati(1 To 4, 1 To cont)
arrDati(1, cont) = sPrefisso
arrDati(2, cont) = sTesto
arrDati(3, cont) = sSuffisso
arrDati(4, cont) = sLink
Next oFile
Next oSubFolder
End With
EstrapolaListeSchede = Application.Transpose(arrDati)
End Function
di seguito un banale esempio di assegnazione dei valori a un intervallo
Sub RiportaDati()
Dim arr As Variant
arr = EstrapolaListeSchede
Range("D6").Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr
End Sub
Vedi se ti può essere utile.
Ti metto anche il link a dropbox di un file con il codice in modo da poterlo copiare direttamente dai moduli.
ciao