Risultati da 1 a 14 di 14

Discussione: unire file (cartelle) excel in un unico file



  1. #1
    L'avatar di Nhio82
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Milano
    Età
    35
    Messaggi
    8
    Versione Office
    365
    Likes ricevuti
    0
    Likes dati
    2

    unire file (cartelle) excel in un unico file

    Ciao a tutti... ho una domanda da porvi...sperando di trovare una soluzione semplice.
    Ho circa 300 file di excel che vorrei unificare in un unico file. Ciascun file contiene una piccola tabella con 10 campi (nome, cognome, email, azienda....ecc...) e un quantitativo di righe variabile tra 2 e 10 (poca roba comunque)... vorrei ottenere un unica tabella con tutte le righe unificate in un unico file ...
    Grazie 1000
    Luca

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: unire file (cartelle) excel in un unico file

    Sicuramente ci vuole una macro. Bisognerebbe capire come è fatto il/i file.
    Hanno la stessa intestazione di colonna?
    Dove comincia la prima cella (riga? colonna?)

    Poi devono essere tutti in una stessa cartella.
    Sarebbe più semplice se allegassi un file di esempio senza dati sensibili.

  3. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7122
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2060
    Likes dati
    1298

    Re: unire file (cartelle) excel in un unico file

    Ciao,
    in pratica vorresti consolidare i dati.

    Si può fare in due modi:

    1) direttamente con gli strumenti di excel, dal menu dati->consolida
    2) col vba

    Tenendo conto della mole di files (300) opterei per la seconda soluzione.

    In rete ci sono diversi tutorial e codici, ma bisogna avere dimestichezza col vba. (es.1, es2, es3)

    Edit: Ciao Rubik, ci siamo sovrapposti!:90:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  4. #4
    L'avatar di Nhio82
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Milano
    Età
    35
    Messaggi
    8
    Versione Office
    365
    Likes ricevuti
    0
    Likes dati
    2

    Re: unire file (cartelle) excel in un unico file

    Grazie intanto per le risposte. Allego una screenshot di un file d'esempio. Come già detto TUTTI i file hanno esattamente gli stessi campi.. quindi vorrei mantenere i campi nella prima riga della tabella con sotto tutte le righe unite di tutti i file.
    Non avendo dimestichezza con il vba.... come potrei procedere?
    Grazie 1000 ancora


  5. #5
    L'avatar di Nhio82
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Milano
    Età
    35
    Messaggi
    8
    Versione Office
    365
    Likes ricevuti
    0
    Likes dati
    2

    Re: unire file (cartelle) excel in un unico file

    nessun'altro consiglio? :(

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: unire file (cartelle) excel in un unico file

    Certo che senza un file di inizio in cui lavorare è difficile.

    Prova con questa routine fatta alla "cieca" senza possibilità di Test, che apre e ricopia i valori di ogni file contenuti nella stessa directory del file corrente:
    Codice: 
    Sub Unisci()
    Dim MyPath As String
    Dim MyName As String
    Dim iRow As Long
    Dim iCount As Long
    Dim wksOrig As Workbook
    Dim shOrig As Worksheet
    Dim wksDest As Workbook
    Dim shDest As Worksheet
    Dim xRow As Long
    Dim iCol As Integer
    
    
    Application.ScreenUpdating = False
    Set wksDest = ThisWorkbook
    Set shDest = wksDest.Sheets("Foglio1")
    
    
    MyPath = ThisWorkbook.Path & "\*.xls"    ' Imposta il percorso.
    MyName = Dir(MyPath, vbNormal)   ' Recupera la prima voce.
    Do While MyName <> ""    ' Avvia il ciclo.
        
        If MyName <> wksDest.Name Then 'esclude se stesso
        
            Set wksOrig = Workbooks.Open(MyName)
            Set shOrig = wksOrig.Sheets(1) '<=== da verificare
    
    
            With shDest
    
    
                iRow = .Range("a" & Rows.Count).End(xlUp).Row + 1 'determina la prima riga vuota del foglio Destinazione
                iCount = shOrig.Range("a" & Rows.Count).End(xlUp).Row ' determina l'ultima riga piena del foglio Origine
        
                For xRow = 2 To iCount 'avvia il ciclo righe
                    For iCol = 1 To 10 ' avvia ciclo colonne
                        .Cells(iRow, iCol) = shOrig.Cells(xRow, iCol) 'scrive valori
                    Next
                    iRow = iRow + 1
                Next
                wksOrig.Close 'chiude il foglio Origine
            End With
        End If
    
    
        MyName = Dir    ' Legge la voce successiva.
    Loop
    
    
    Application.ScreenUpdating = True
    
    
    Set wksDest = Nothing
    Set shDest = Nothing
    Set wksOrig = Nothing
    Set shOrig = Nothing
    
    
    End Sub
    P.S. La prossima volta dimostra un minimo di sforzo allegando una bozza di file di esempio su cui lavorare.

  7. #7
    L'avatar di Nhio82
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Milano
    Età
    35
    Messaggi
    8
    Versione Office
    365
    Likes ricevuti
    0
    Likes dati
    2

    Re: unire file (cartelle) excel in un unico file

    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Certo che senza un file di inizio in cui lavorare è difficile.

    Prova con questa routine fatta alla "cieca" senza possibilità di Test, che apre e ricopia i valori di ogni file contenuti nella stessa directory del file corrente:
    Codice: 
    Sub Unisci()
    Dim MyPath As String
    Dim MyName As String
    Dim iRow As Long
    Dim iCount As Long
    Dim wksOrig As Workbook
    Dim shOrig As Worksheet
    Dim wksDest As Workbook
    Dim shDest As Worksheet
    Dim xRow As Long
    Dim iCol As Integer
    
    
    Application.ScreenUpdating = False
    Set wksDest = ThisWorkbook
    Set shDest = wksDest.Sheets("Foglio1")
    
    
    MyPath = ThisWorkbook.Path & "\*.xls"    ' Imposta il percorso.
    MyName = Dir(MyPath, vbNormal)   ' Recupera la prima voce.
    Do While MyName <> ""    ' Avvia il ciclo.
        
        If MyName <> wksDest.Name Then 'esclude se stesso
        
            Set wksOrig = Workbooks.Open(MyName)
            Set shOrig = wksOrig.Sheets(1) '<=== da verificare
    
    
            With shDest
    
    
                iRow = .Range("a" & Rows.Count).End(xlUp).Row + 1 'determina la prima riga vuota del foglio Destinazione
                iCount = shOrig.Range("a" & Rows.Count).End(xlUp).Row ' determina l'ultima riga piena del foglio Origine
        
                For xRow = 2 To iCount 'avvia il ciclo righe
                    For iCol = 1 To 10 ' avvia ciclo colonne
                        .Cells(iRow, iCol) = shOrig.Cells(xRow, iCol) 'scrive valori
                    Next
                    iRow = iRow + 1
                Next
                wksOrig.Close 'chiude il foglio Origine
            End With
        End If
    
    
        MyName = Dir    ' Legge la voce successiva.
    Loop
    
    
    Application.ScreenUpdating = True
    
    
    Set wksDest = Nothing
    Set shDest = Nothing
    Set wksOrig = Nothing
    Set shOrig = Nothing
    
    
    End Sub
    P.S. La prossima volta dimostra un minimo di sforzo allegando una bozza di file di esempio su cui lavorare.
    Ciao, intanto ti ringrazio della risposta. Chiedo scusa se non ho fornito gli strumenti necessari per fornire tutte le informazioni.... pensavo che la screenshot fosse sufficiente.
    Detto ciò, allego 3 file di esempio...e un quarto file che rappresenta ciò che vorrei vedere al termine dell'operazione di unione. Purtroppo non saprei come poter applicare il codice che mi hai suggerito... :62:

    https://drive.google.com/folderview?...jA&usp=sharing

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: unire file (cartelle) excel in un unico file

    Segui queste istruzioni:
    1) apri il file "Roster_globale"
    2) apri l'editor VBA con ALT+F11
    3) inserisci / Modulo
    4) Incolla questo codice:
    Codice: 
    Sub Unisci()
    Dim MyPath As String
    Dim MyName As String
    Dim iRow As Long
    Dim iCount As Long
    Dim wksOrig As Workbook
    Dim shOrig As Worksheet
    Dim wksDest As Workbook
    Dim shDest As Worksheet
    Dim xRow As Long
    Dim iCol As Integer
    Dim MyFile As String
    
    
    
    
    Application.ScreenUpdating = False
    Set wksDest = ThisWorkbook
    Set shDest = wksDest.Sheets("Report Data")
    
    
    
    
    MyPath = ThisWorkbook.Path & "\"    ' Imposta il percorso.
    MyFile = MyPath & "*.xls"    ' Imposta il percorso.
    MyName = Dir(MyFile, vbNormal)   ' Recupera la prima voce.
    Do While MyName <> ""    ' Avvia il ciclo.
        
        If MyName <> wksDest.Name Then 'esclude se stesso
        
            Set wksOrig = Workbooks.Open(MyPath & MyName)
            Set shOrig = wksOrig.Sheets(1) '<=== da verificare
    
    
            With shDest
    
    
                iRow = .Range("a" & Rows.Count).End(xlUp).Row + 1 'determina la prima riga vuota del foglio Destinazione
                iCount = shOrig.Range("a" & Rows.Count).End(xlUp).Row ' determina l'ultima riga piena del foglio Origine
        
                For xRow = 2 To iCount 'avvia il ciclo righe
                    For iCol = 1 To 10 ' avvia ciclo colonne
                        .Cells(iRow, iCol) = shOrig.Cells(xRow, iCol) 'scrive valori
                    Next
                    iRow = iRow + 1
                Next
                wksOrig.Close 'chiude il foglio Origine
            End With
        End If
    
    
    
    
        MyName = Dir    ' Legge la voce successiva.
    Loop
    
    
    
    
    Application.ScreenUpdating = True
    
    
    
    
    Set wksDest = Nothing
    Set shDest = Nothing
    Set wksOrig = Nothing
    Set shOrig = Nothing
    
    
    End Sub
    5) inserisci nel foglio un tasto o forma e associalo alla macro
    Fammi sapere

  9. I seguenti utenti hanno dato un "Like"


  10. #9
    L'avatar di Nhio82
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Milano
    Età
    35
    Messaggi
    8
    Versione Office
    365
    Likes ricevuti
    0
    Likes dati
    2

    Re: unire file (cartelle) excel in un unico file

    Grazie ha funzionato ;)
    Ha fatto esattamente ciò di cui avevo bisogno.
    Ti ringrazio tanto!

  11. #10

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2807
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    978

    Re: unire file (cartelle) excel in un unico file

    Se hai risolto il problema, segna questa discussione come "RISOLTO".
    Vai sul menù "Strumenti Discussione" (all'inizio del thread) e scegli la voce "Segna questo thread come risolto...".

  12. #11
    L'avatar di ignux
    Clicca e Apri
    Data Registrazione
    Nov 2017
    Località
    PSE
    Messaggi
    2
    Versione Office
    2017
    Likes ricevuti
    0
    Likes dati
    0

    Re: unire file (cartelle) excel in un unico file

    scusate ho un problema che non riesco a risolvere non sono molto esperto
    io vorrei unire n file in un unico che si chiama Produzione
    copio incollo il percorso-> Sostituisco *.xls con Produzione.xls
    Eseguo la routine e mi da un errore al rigo in grassetto
    "Nome o Numero file non valido"

    potete aiutarmi?

    MyPath = ThisWorkbook.Path & "*.xls" ' Imposta il percorso.
    MyName = Dir(MyPath, vbNormal) ' Recupera la prima voce.
    Do While MyName <> "" ' Avvia il ciclo.

    If MyName <> wksDest.Name Then 'esclude se stesso

    Set wksOrig = Workbooks.Open(MyName)
    Set shOrig = wksOrig.Sheets(1) '<=== da verificare




    With shDest

  13. #12

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6771
    Versione Office
    2013
    Likes ricevuti
    716
    Likes dati
    164

    Re: unire file (cartelle) excel in un unico file

    Ignux non devi accodarti a vecchie discussioni.

    Devi aprirne una tua dove allegando un file di esempio con dati ed eventuali macro spieghi il tuo problema.

    Inoltre sei invitato a

    1) leggere il regolamento e gli annunci dello staff
    2) presentarti nella sezione "Presentati qui"
    3) inserire un avatar sul tuo profilo.

    Comunque, in attesa della nuova discussione (da aprire nella sezione "VBA e macro") e del file, prova a modificare così

    Codice: 
    MyPath = ThisWorkbook.Path & "\" & ".xls"
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

  14. #13
    L'avatar di ignux
    Clicca e Apri
    Data Registrazione
    Nov 2017
    Località
    PSE
    Messaggi
    2
    Versione Office
    2017
    Likes ricevuti
    0
    Likes dati
    0

    Re: unire file (cartelle) excel in un unico file

    Scusa Alfrimpa

    mi puoi aiutare con il mio problema? purtroppo la routine aveva funzionato 1 sett fa
    adesso non mi funziona più

  15. #14

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6771
    Versione Office
    2013
    Likes ricevuti
    716
    Likes dati
    164

    Re: unire file (cartelle) excel in un unico file

    Una routine che funziona non può smettere di funzionare da sola; tu deve aver fatto per forza qualcosa.

    Ti ho detto che devi aprire una nuova discussione allegando il file con macro.

    Poi devi anche fare quello che ti ho detto al post 12.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

Discussioni Simili

  1. [Tutorial VBA] Processare Cartelle o file - Il File Sistem
    Di dracoscrigno nel forum Imparando Excel & VBA - Tutorial di Excel-
    Risposte: 6
    Ultimo Messaggio: 02/03/17, 09:26
  2. Unire più file excel
    Di Enniop nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 01/02/17, 18:37
  3. [Risolto] Importare tanti file csv in un unico file excel
    Di gianluca26 nel forum Domande su Excel VBA e MACRO
    Risposte: 15
    Ultimo Messaggio: 12/11/16, 18:37
  4. importare 1 txt per ogni foglio in un unico file excel
    Di Loretta nel forum Domande su Excel VBA e MACRO
    Risposte: 20
    Ultimo Messaggio: 20/07/16, 14:32
  5. Unire file excel
    Di lemon964 nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 11/05/16, 00:40

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •