se ho ben capito questo codice dovrebbe fare quello che cerchi:
N.B. inserisci in un form "FORM1" i seguenti componenti:

una TextBox chiamata "txt_curDir"
una TextBox chiamata "txt_newDir"
una ListBox chiamata "ListBox"
un Command button chiamato "cmd_visualizza"

poi:
codice:
Option Explicit
Dim dir_corrente As String

Private Sub cmd_visualizza_Click()
    On Error GoTo cattura_exception
    Dim ptr_file1 As String
    dir_corrente = txt_curDir.Text & "\*"
    If dir_corrente <> "" Then
        ListBox.Clear
        ptr_file1 = Dir$(dir_corrente)
        While ptr_file1 <> ""
            ListBox.AddItem ptr_file1
            ptr_file1 = Dir$
        Wend
    Else
        txt_curDir = "inseire un percorso es: ""C:\Documenti"""
    End If
cattura_exception:
    txt_curDir.Text = "Percorso non valido"
End Sub

Private Sub ListBox_Click()
    On Error GoTo cattura_exception
    Dim ptr_file1, ptr_file2 As String
    ptr_file1 = ListBox.Text
    ptr_file2 = Replace(ListBox.Text, Right$(ListBox.Text, 4), "")
    MkDir txt_curDir.Text & "\" & ptr_file2
    FileCopy txt_curDir.Text & "\" & ptr_file1, txt_curDir.Text & "\" & ptr_file2 & "\" & ptr_file1
    txt_newDir.Text = ptr_file2
cattura_exception:
    txt_newDir.Text = "Directory già esistente, Impossibile copiare il file"
End Sub