Ho esaminato il tuo codice, ed è ovvio che non funzioni, perché tu stai cercando di copiare l'intera struttura di origine sulla cartella di destinazione.
Devi prendere il nome del file dal listbox e ricreare il percorso finale a partire dalla 'fine' della cartella di ricerca. Ti faccio un esempio pratico:
' la cartella da cui parte la ricerca
codice:
Dim StartFolder As String = "C:\Users\Unknown\Desktop\Progetto_base\cercaifilequi\"
Tu vuoi copiare i file qui:
codice:
Dim TargetFolder as string = "C:\Users\Public\Documents\Estrazione\"
è chiaro che devi indicare alla SHFileOperation il percorso completo di destinazione, per cui dovrai sostituire StarFolder con TargetFolder, mantenendo il resto del percorso del file, cartelle incluse (puoi usare un semplice Replace). Per essere più chiari:
se il file di origine è :
"C:\Users\Unknown\Desktop\Progetto_base\cercaifileq ui\Marco\Pippo\nota.txt"
il percorso di destinazione che devi passare alla funzione dovrà essere:
"C:\Users\Public\Documents\Estrazione\Marco\Pippo\nota.txt"
Questo, ovviamente, andrà fatto per ogni file, perché ogni file ha un percorso differente.
Ma il vantaggio sarà che è la funzione che si incarica di ricreare tutta la struttura delle cartelle.
Nel tuo codice, dato che non hai usato il flag FOF_SILENT, la SHFileOperation ti avviserà ogni volta che la cartella di destinazione non esiste e ti chiederà conferma se crearla o meno (c'è comunque il checkbox che ti permette di evitare questo le volte successive.
Ma se usi il flag FOF_SILENT la creazione diventa automatica (silente, appunto).