Newsgroup: it.comp.appl.access
Titolo: Copiare file con VBA

Per copiare alcuni file presenti in alcune cartelle di rete in una specifica cartella archivio ho utilizzato l'istruzione FileCopy.
Nelle accennate cartelle di rete sono pero' presenti piu' file.
Volendo copiare uno specifico file (es. DATI_150310.H1009), conoscendo solo parte del nome (H1009 - indicano ore e minuti di creazione a me non noti), quale sintassi devo utilizzare?
Es: FileCopy "Z:\dati\" & "DATI_150310*", "C:\Desktop\Archivio\DATI_150310.txt"
grazie  

 grazie
 
' Purtroppo non si puo' fare con i caratteri jolly, a quanto 
' mi risulta perlomeno.
 
' Devi fare un ciclo sulla directory usando la funzione DIR : 
 
Dim Percorso_IN  as string
Dim NomeFile_IN  as string 
 
Dim NomeFile_OUT as string 
 
Percorso_IN = "c:\"                           ' Imposta il percorso.
Nome_File_IN = Dir(Percorso_IN, vbDirectory)  ' Recupera la prima voce.
 
Do While Nome_File_IN <> ""                   ' Inizia il ciclo.
 
    if devo_copiare_il_file(Nome_File_IN) then 
       filecopy Nome_File_IN, Nome_Out(Nome_File_IN)        
    endif
 
    Nome_File_Out = Dir                       ' Legge la voce successiva.
Loop
 
' Dove : 
' 1)
' devo_copiare_il_file( ) e' una funzione scritta da te che decide
' se il file e' quello giusto. Restituisce True o False 
' 2)
' Nome_Out( ) e' una funzione scritta da te che  restituisce il 
' nome del file output (completo) in funzione del nome del file 
' input
 
Fammi sapere.

 ' Devi fare un ciclo sulla directory usando la funzione DIR : 
 
' Scusa, ho sbagliato a scrivere, ecco la versione corretta : 
 
Dim Percorso_IN  as string 
Dim NomeFile_IN  as string 
 
Percorso_IN = "c:\"                           ' Imposta il percorso. 
Nome_File_IN = Dir(Percorso_IN, vbDirectory)  ' Recupera la prima voce. 
 
Do While Nome_File_IN <> ""                   ' Inizia il ciclo. 
 
    if devo_copiare_il_file(Nome_File_IN) then 
       filecopy Nome_File_IN, Nome_Out(Nome_File_IN)         
    endif 
 
    Nome_File_IN = Dir                        ' Legge la voce successiva. 
Loop 
 
' il resto e' identico (ossia le note)

Il giorno lunedì 16 marzo 2015 14:04:28 UTC+1, 
radica...@gmail.com
 ha scritto:
 
c'e' un altro errore, perdonami.
 
Non "filecopy Nome_File_IN, Nome_Out(Nome_File_IN)"
perche' la dir non restituisce il nome completo. 
 
Devi fare 
filecopy "c:\" & Nome_File_IN, Nome_Out(Nome_File_IN)  

Il giorno lunedì 16 marzo 2015 12:10:09 UTC+1, micpis ha scritto:

Perfetto radica, funziona alla grande . grazie
 


Sempre pronto (fin dove arrivo) xke' : chi se ritira dalla lotta
e' un gran fijo de na mignotta :D 
 

Il giorno lunedì 16 marzo 2015 12:10:09 UTC+1, micpis ha scritto:

Ciao micpis, ciao radica...
 
Un altro modo:
 
Public Sub Test()
Const cstrSrcPath = "D:\Percorso\"
Const cstrDstPath = "D:\Percorso\Pippo\"
Const cstrMskFile = "DATI_150310.H????"
Const cstrDstFile = "DATI_150310.txt"
 
Dim strDir      As String
Dim strSrcFile  As String
Dim lngCount    As Long
 
    strDir = Dir(cstrSrcPath & cstrMskFile, vbNormal)
    If Len(strDir) Then
      strSrcFile = strDir
      Do While Len(strDir)
        lngCount = lngCount + 1
        strDir = Dir
      Loop
      If lngCount > 1 Then
        MsgBox "Esiste più di un file con maschera " & cstrMskFile
        Exit Sub
      End If
    Else
      MsgBox "Il file non esiste."
      Exit Sub
    End If
    FileCopy cstrSrcPath & strSrcFile, cstrDstPath & cstrDstFile
 
End Sub
 
-- 
Ciao!
Maurizio

 strDir = Dir(cstrSrcPath & cstrMskFile, vbNormal)
 
Ah, quindi la funzione dir accetta anche i caratteri jolly ? 
Non lo sapevo. Buono ! 
 
Com' e' l' output ? Ossia mette tutti i nomi uno attaccato all' 
altro tipo : 
mio_file.txttuo_file.txt o cosa ?  C' ha un separatore ? 
 
E prende pure "*" ? O solo i punti interrogativi ? 
 
Fammi sapere


Ciao radica...,
 
leggi qui:
https://msdn.microsoft.com/en-us/library/office/gg278779%28v=office.15%29.aspx?f=255&MSPPError=-2147217396
 
 
in particolare il paragrafo Remarks che, tradotto alla buona, dice:
 
"In Microsoft Windows, Dir supporta l'uso dei metacaratteri, (*) per caratteri multipli e (?) per un singolo carattere."
 
Funziona cosi' sin dai tempi antichi del DOS. 
 
L'output e' sempre quello, un file alla volta, in un ciclo come quello che ho postato.
 
-- 
Ciao!
Maurizio


Ah ok tutto chiaro allora. Grazie.