Copia di file tra directory

di il
2 risposte

Copia di file tra directory

Buongiorno,
stò utilizzando un pulsante per la copia di files tra directory utilizzando la funzione dir in un ciclo condizionale do while. Il codice dovrebbe creare delle directory all'interno delle quali destinare i file. Riesco a creare solo il primo albero delle directory e a copia il primo file e poi si blocca li. Premetto che nella directory di origine ci sono attualemente 6 file.
Indico il codice:
Private Sub cmd_pos_signed_Click()
Dim strFileName, strFolder, strFolder_temp, strFileSpec As String
Dim Rapporto_Analisi, Nome_File, Categoria As String, tipo_camp As String, ente As String, Anno As String

strFolder = Environ$("USERPROFILE") & "\Rapporti_Prova\"
strFolder_temp = strFolder & "temp\"
strFileSpec = strFolder_temp & "*.pdf"
strFileName = Dir(strFileSpec)
If Len(strFileName) > 0 Then
    Do While Len(strFileName) > 0
    
       '----------------- crea l'albero delle directory che conterrà i report delle analisi-------------------

       Nome_File = Mid$(strFileName, 1, Len(strFileName) - 4)
       ente = DLookup("[Denominazione_Ente]", "Q_Protocollo", "Numero_Certificato='" & Nome_File & "'")
       Categoria = DLookup("[Categoria]", "Q_Protocollo", "Numero_Certificato= '" & Nome_File & "'")
       tipo_camp = DLookup("[Tipo_Campione]", "Q_Protocollo", "Numero_Certificato= '" & Nome_File & "'")
       Anno = Year(DLookup("[Data_Certificato]", "Q_Protocollo", "Numero_Certificato= '" & Nome_File & "'"))
       
       Rapporto_Analisi = Environ$("USERPROFILE") & "\Rapporti_Analisi"
       
       If Len(Dir(Rapporto_Analisi, vbDirectory)) = 0 Then
       MkDir (Rapporto_Analisi)
       End If
    
       Rapporto_Analisi = Rapporto_Analisi & "\" & ente
       If Len(Dir(Rapporto_Analisi, vbDirectory)) = 0 Then
       MkDir (Rapporto_Analisi)
       End If
    
       Rapporto_Analisi = Rapporto_Analisi & "\" & Categoria
       If Len(Dir(Rapporto_Analisi, vbDirectory)) = 0 Then
       MkDir (Rapporto_Analisi)
       End If
        
       Rapporto_Analisi = Rapporto_Analisi & "\" & tipo_camp
       If Len(Dir(Rapporto_Analisi, vbDirectory)) = 0 Then
       MkDir (Rapporto_Analisi)
       End If
        
       Rapporto_Analisi = Rapporto_Analisi & "\" & Anno
       If Len(Dir(Rapporto_Analisi, vbDirectory)) = 0 Then
       MkDir (Rapporto_Analisi)
       End If
        '----------------- crea l'albero delle directory che conterrà i report delle analisi-------------------

        FileCopy strFolder_temp & strFileName, Rapporto_Analisi & "\" & strFileName ' copia i file"
        strFileName = Dir
    Loop
Else
    MsgBox "Non sono presenti files firmati.", vbInformation
    Exit Sub
End If

End Sub
Ringrazio in anticipo chi volesse aiutarmi.

2 Risposte

  • Re: Copia di file tra directory

    Se come sembra nel DB hai memorizzato il Percorso del file, perchè devi creare una Struttura di cartelle che complica le cose...?
    Le cartelle con i File non si usano MAI da FileSystem quando si sviluppa un sistema di gestione, si rende disponibile il NomeFile con la possibilità di Aprirlo senza accedere alle cartelle.
    Ragionando in questo modo, l'esigenza di creare una struttura di contenimento viene meno... come normalmente è..!

    In ogni caso crei N DIR tutte assegnate alla Variabile Rapporto_Analisi, ma quando usi FileCopy quella variabile vale SEMPRE a prescindere:
    
    Rapporto_Analisi = Rapporto_Analisi & "\" & Anno
    Secondo me quel codice non quadra molto...!
  • Re: Copia di file tra directory

    Sostituirei il mai col sempre, e con una funzione di aggiornamento del db a partire dalle cartelle.
    Tanto per gestire l'arrivo di documenti da cose strane, come marcatempi, telecamere, foto da cellulare etc
    I documentali dunque funzionano con entrambe le modalità.

    Detto questo mi sfugge quale sia la domanda.
    Copiare ricorsivamente una cartella?
    Usare una api di Windows per copiarla?
Devi accedere o registrarti per scrivere nel forum
2 risposte