unire più file in uno solo



  • unire più file in uno solo
    di mb data: 27/04/2017 14:41:04

    buongiorno a tutti

    sto cercando di mettere insieme due procedure che sicuramente arrivano dalla stessa fonte ma non riesco a sistemarle

    "unire più file in automatico" andrebbe bene per la prima parte dove preleva da un archivio e dopo aver copiato i dati li salva in altra cartella ma ha il problema che copia per colonne i dati

    il secondo sarebbe più preciso perché copia i dati dalle celle che io desidero utilizzare però copia solo un file e poi manca lo spostamento nella cartella storico





  • di mb data: 27/04/2017 14:44:46

    questo è il file che ho modificato ed era proposto su questo sito anni fa

    lo riproposto così com'era con qualche modifica...

     
    Sub Sfoglia_Files()
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''' ATTENZIONE RICHIEDE L'ATTIVAZIONE DELLA LIBRERIA MICROSOFT SCRIPTING RUNTIME '''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim strPath As String
       
        Dim objFSY As FileSystemObject
        Dim objFOL As Folder
        Dim objFIL As File
        
        Dim wbFrom As Workbook, wbTo As Workbook
        Dim wsFrom As Worksheet, wsTo As Worksheet
        Dim x As Long, i As Long
        Dim rngCopy As Range
        
        Set wbTo = ThisWorkbook
        Set wsTo = wbTo.Sheets(1)
         
        strPath = "C:Moduli_ricevuti" '''QUI IL PERCORSO DOVE HAI I MILLEMILA FILES
        
        Set objFSY = New FileSystemObject
        Set objFOL = objFSY.GetFolder(strPath)
    
        For Each objFIL In objFOL.Files
          x = wsTo.Range("B" & wsTo.Rows.Count).End(xlUp).Row + 1
          
          Set wbFrom = Application.Workbooks.Open(objFIL)
          Set wsFrom = wbFrom.Sheets(1) ''QUI IL NUMERO DEL FOGLIO DATASHEET, HO SUPPOSTO SIA IL PRIMO
            With wsFrom
    '      cella P2 su colonna C del file Master
              .Range("g8").Copy wsTo.Range("C" & x)
    '      cella Q4 su colonna B del file Master
              .Range("d9").Copy wsTo.Range("d" & x)
    '      i dati letti su colonna R su colonna BF del file Master ( ci sono dati uguali, copiare solo una volta)
    '      NON E' CHIARO
    '      cella I8 su colonna D del file Master
              .Range("e17").Copy wsTo.Range("e" & x)
    '      cella I10 su colonna E del file Master
              .Range("k17").Copy wsTo.Range("f" & x)
    '      cella I12 su colonna F del file Master
              .Range("e19").Copy wsTo.Range("g" & x)
    '      cella I14 su colonna G del file Master
    '      cella I16 su colonna H del file Master
    '      cella I18 su colonna I del file Master
    '      cella I20 su colonna J del file Master
    '      cella I23 su colonna K del file Master
    '      cella I24 su colonna L del file Master
    '      cella I25 su colonna M del file Master
    '      cella I26 su colonna N del file Master
    '      cella I27 su colonna O del file Master
    '      cella I28 su colonna P del file Master
    '      cella I29 su colonna Q del file Master
    '      cella I30 su colonna R del file Master
    '      cella I32 su colonna S del file Master
    '      cella I33 su colonna T del file Master
    '      cella I34 su colonna U del file Master
    '      cella I35 su colonna V del file Master
    '      cella I36 su colonna W del file Master
    '      cella I37 su colonna X del file Master
    '      cella I38 su colonna Y del file Master
    '      cella I39 su colonna Z del file Master
    '      cella I40 su colonna AA del file Master
    '      cella I41 su colonna AB del file Master
    '      cella I42 su colonna AC del file Master
    '      cella I44 su colonna AD del file Master
    '      cella I46 su colonna AE del file Master
    '      cella J49 su colonna AE del file Master, cella N49 su colonna AG del file Master
    '      cella J50 su colonna AH del file Master, cella N50 su colonna AI del file Master
    '      cella J51 su colonna AJ del file Master, cella N51 su colonna AK del file Master
    '      cella J52 su colonna AL del file Master, cella N52 su colonna AM del file Master
    '      cella I53 su colonna AN del file Master
    '      cella I55 su colonna AO del file Master
    '      cella I56 su colonna AP del file Master
    '      cella J57 su colonna AQ del file Master, cella N57 su colonna AR del file Master
    '      cella J58 su colonna AS del file Master, cella N58 su colonna AT del file Master
    '      cella J59 su colonna AU del file Master, cella N59 su colonna AV del file Master
    '      cella I62 su colonna AW del file Master
    '      cella I63 su colonna AX del file Master
    '      cella I64 su colonna AY del file Master
    '      cella I67 su colonna AZ del file Master
    '      cella I68 su colonna BA del file Master
    '      cella I69 su colonna BB del file Master
    '      cella I70 su colonna BC del file Master
    '      cella I71 su colonna BD del file Master
    '      cella I73 su colonna BE del file Master
    
            End With
          wbFrom.Close 0
          Set wbFrom = Nothing
          Set wsFrom = Nothing
        Next
    
        Set objFSY = Nothing
        Set objFOL = Nothing
        Set wbTo = ThisWorkbook
        Set wsTo = Nothing
    End Sub
     
    
    
    
    
    



  • di mb data: 27/04/2017 14:47:52

    questo invece è l'altro pezzo di procedura che vorrei aggiungere per salvare i file elaborati ed inserire nome e data di elaborazione dell'archivio...

    Se non ricordo male la fonte delle due procedure è sempre la stessa ....


    grazie

     
       MiaDir = "C:Moduli_Ricevuti" ' ----->> ADATTA i nomi
        Perc_Stor = "Storico" ' ----->> ADATTA i nomi
        File_El = Dir(MiaDir & "*.xls")
        If File_El = "" Then
            MsgBox "ATTENZIONE: nel percorso   '" & MiaDir & "'   non sono stati trovati file"
            Exit Sub
        End If
        
        I = Workbooks(Nome_Iniziale).Sheets(WS_Out).Range("A" & Rows.Count).End(xlUp).Row + 1
        Righe = I
        File_Cop = 0
        While File_El <> ""
            Nome_Attuale = File_El
            Workbooks.Open Filename:=MiaDir & Nome_Attuale
            WS_In = Workbooks(Nome_Attuale).ActiveSheet.Name
            RR = Workbooks(Nome_Attuale).Sheets(WS_In).Range("A" & Rows.Count).End(xlUp).Row
            For J = 2 To RR
                Workbooks(Nome_Iniziale).Sheets(WS_Out).Cells(I, 1) = File_El
                Workbooks(Nome_Iniziale).Sheets(WS_Out).Cells(I, 2) = Date
                



  • di patel data: 27/04/2017 15:32:45

    invece di proporre soluzioni allega i file di esempio da unire e quello col risultato desiderato





  • di mb data: 27/04/2017 15:45:22

    scusa patel ma i tre file sono nella cartella rar non si apre ??

    negli esempi allegato ho messo due file pippo e pluto

    nel file con la macro mi riporta solo il primo file

    Fammi sapere

    Grazie



  • di mb data: 27/04/2017 15:52:54

    nel file allegato mb2

    Vi ho inserito il risultato sperato

    grazie per la disponibilità




  • di patel data: 27/04/2017 16:13:52

    pippo e pluto mi sembrano uguali, comunque insisto, non proponete soluzioni come spiegazione, spiegate bene cosa c'è da fare, se poi avete fatto qualche prova allegatela, ma non deve essere quella la spiegazione





  • di mb data: 27/04/2017 17:36:22

    mi spiace ma le prove che ho fatto sono i file che ho allegato

    il file mb2 serve solo per far vedere cosa mi piacerebbe ottenere dalla copia dei due file in quello riepilogativo dove ho almeno 20 celle uguali in tutti i file da copiare nel file di riepilogo

    nel primo file come vedi è solo riportato il nome del primo fornitore siccome ne ho 130 vorrei poterli ricopiare tutti senza dover fare tutto a mano

    da incompetente penso ci voglia un ciclo che apre i file copia i dati impostati, chiude il file e passa all'elaborazione successiva..


    scusa.. se non riesco



  • di mb data: 28/04/2017 10:16:02

    Buongiorno

    Ci sono riuscito ....

    finisco solo un lavoro urgente e poi posto il file

    se qualcuno comunque riesce a darmi un suggerimento lo accetto volentieri perchè ormai ho capito che con VBA ci sono diverse strade per arrivare allo stesso risultato un pò come com google map o waze



    a fra poco




  • di mb data: 28/04/2017 10:56:01

    Eccomi ho allegato una serie di file che ho zippato

    con questo sistema creando una cartella incassi in C salvo i due file e poi posso elaborare il file come desideravo

    in realtà dovrei fare un'aggiunta : al termine di tutte le operazioni salvare in una cartella old i file originali dai quali ho prelevato i dati ...

    se qualcuno più esperto ritiene ci sia una soluzione migliore come ho detto prima è ben gradita

    buona giornata



    file MB3



  • di mb data: 28/04/2017 14:40:13

    Buon pomeriggio

    chiedo ancora il Vostro prezioso aiuto per chiudere l'argomento

    l'intenzione era a fine elaborazione di spostare i file dai quali ho preso i dati dentro la cartella old

    pensavo con move di ottenere questo risultato invece il file rimane sempre nella stessa cartella ma vien semplicemente rinominato con oldpippo oppure oldpluto



    Grazie

     
    ' spostare i file
    
    
    Dim dest As String
    
    dest = strPath & "" & "old"
    
    For Each ofil In oFOL.Files
    
    ofil.Move dest & ofil.Name
    
    Next ofil



  • di mb data: 28/04/2017 15:13:46

    c'era un errore di "sintassi"

     
    ' spostare i file
    
    
    Dim dest As String
    
    dest = strPath & "" & "old"
    
    For Each ofil In oFOL.Files
    
    'ofil.Move dest & ofil.Name
    
    ofil.Move dest & "" & ofil.Name
    Next
    



  • di mb data: 28/04/2017 15:14:39

    grazie

    alla prossima