Condividi:        

Importare PIU' FILE di EXCEL in uno solo accodando le righe

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Importare PIU' FILE di EXCEL in uno solo accodando le righe

Postdi Pacia_71 » 26/02/16 17:04

Buongiorno a tutti è da molto che vi seguo ho sempre spiato le vostre super soluziona senza avere bisogno direttamente... ma oggi ho bisogno di voi.

Devo importare più file di EXCEL (solo il 1 foglio, tutti strutturati uguali)in uno solo uno accodato all'altro in modo da formare un grande elenco, questi file sono generati da Google documents scaricandoli li salvo in una cartella e poi li voglio importare in un file EXCEL.

Caratteristiche:
struttura del file sempre uguale
colonne da importare dalla A alla J
la prima riga va importata solo una volta
i nomi dei file che devono essere importati sono diversi(ideale sarebbe poterli selezionare al momento della partenza della macro).

spero di essere stato preciso.

Grazie
Pacia_71
Newbie
 
Post: 3
Iscritto il: 26/02/16 16:50

Sponsor
 

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 26/02/16 23:52

Ciao Pacia_71, benvenuto nel forum.
Non mi e' chiaro questo passo:
i nomi dei file che devono essere importati sono diversi(ideale sarebbe poterli selezionare al momento della partenza della macro).
Non e' possibile che metti nella directory solo i file da importare e poi si importano Tutti i file presenti?

Ti aspettiamo con questo chiarimento.
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Pacia_71 » 29/02/16 12:25

Grazie per la risposta.... per ora
si , mi sono spiegato male,volevo dire che i nomi sono diversi e non in sequenza.. ma posso mettere nella cartella tutti i file che devono essere importati.
Pacia_71
Newbie
 
Post: 3
Iscritto il: 26/02/16 16:50

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 01/03/16 00:16

Crea un file nuovo e al suo interno inseriscigli in Modulo1 del vba questo codice:
Codice: Seleziona tutto
Sub RIEP()
Dim myDir As String, myCFile As String, myLast As Long, myDest As String
'
myDest = "Foglio1"                  '<<< Il Foglio in cui si creera' il riepilogo
myDir = "D:\PIPPO\Archivio\"        '<<< La dir dei file da consolidare (con \ finale)
'
Application.EnableEvents = False
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
On Error Resume Next
    myLast = getLast
    Workbooks.Open (myDir & myCFile)
    Sheets(1).Select
    myused = getLast
    If myLast = 0 Then
        ActiveSheet.Range("A1:J" & myused).Copy ThisWorkbook.Sheets(myDest).Cells(myLast + 1, 1)
    Else
        ActiveSheet.Range("A2:J" & myused).Copy ThisWorkbook.Sheets(myDest).Cells(myLast + 1, 1)
    End If
    ActiveWorkbook.Close False
myCFile = Dir
Loop
Application.EnableEvents = True
MsgBox ("Completato...")
End Sub


Function getLast() As Long
Dim LastR As Long
On Error Resume Next
LastR = Cells.Find(What:="*", After:=[A1], _
              SearchOrder:=xlByRows, _
              SearchDirection:=xlPrevious).Row
On Error GoTo 0
getLast = LastR
End Function

Operativamente, appena creato il nuovo file:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Personalizza le righe marcate <<< come da commenti.

Poi torna su Excel e, una volta che i file da consolidare sono tutti stati posizionati nella directory dichiarata, lancia la macro RIEP:
-premi Alt-F8
-seleziona RIEP dall'elenco di macro disponibili
-premi Esegui
A questo punto i vari file dovrebbero aprirsi in sequenza e il contenuto delle colonen A:J viene copiato nel foglio dichiarato, accodandoli uno dopo l'altro.

Prova e fai sapere
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Pacia_71 » 04/03/16 10:49

Grazie Mille per la risposta....

Allora per il funzionamento...ha funzionato la prima volta ma non ha importato la colonna B, poi alla seconda volta mi appare il messaggio Completato ma non importa nulla.(prima di lanciarlo ho cancellato tutto dal folgio1 del il file importatore).

grazie
Pacia_71
Newbie
 
Post: 3
Iscritto il: 26/02/16 16:50

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 04/03/16 15:17

ho provato anche io, perchè mi interessa molto la possibilità di accodare file in excel, e mi dà lo stesso errore.
compare COMPLETATO ma il foglio è vuoto.
premetto che ho anche nominato sia il file .xlsx che il foglio con lo stesso nome (accodare).
i file nella directory sembra che li apra, ma poi succede qualcosa che non li fa incollare.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi ricky53 » 04/03/16 15:21

Ciao,
deve funzionare ... è scontato che dovete modificare il percorso (variabile "myDir") altrimenti otterrete ... "Completato ..."
Eh, Eh !!!

Provate ad eseguire il codice con "F8" ossia istruzione per istruzione e ... fateci sapere che cosa fa.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 04/03/16 15:48

l'ho fatto, gli ho dato il percorso esatto, e poi ho provato con f8 per vedere come procedeva, ripeto, sembra che apra i file, ma poi qualcosa va storto e non incolla nulla.
ho anche provato a dare il percorso al file che deve creare, ma non credo c'entri nulla.
Codice: Seleziona tutto
myDest = "Foglio1"                  '<<< Il Foglio in cui si creera' il riepilogo
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi ricky53 » 04/03/16 15:52

Ciao,
che istruzioni esegue?
Passa per
Codice: Seleziona tutto
Workbooks.Open (myDir & myCFile)

esegue l'istruzione
Codice: Seleziona tutto
ActiveWorkbook.Close False

e poi ripete l'istruzione
Codice: Seleziona tutto
If myCFile = "" Then Exit Do


Per verificare quanto ti ho scritto premi più volte "F8" e ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 04/03/16 16:00

1) Nella macro e' rimasta una riga On Error Resume Next che deve essere eliminata (potrebbe nascondere errori che e' meglio siano invece visualizzati).
2) Aggiungete nel codice queste due righe in queste posizioni:
Codice: Seleziona tutto
 '....
Application.EnableEvents = False
Debug.Print vbCrLf & vbCrLf & ">>>>>>>>>> "    '<<< Aggiungere per prova
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
'On Error Resume Next
    myLast = getLast
Debug.Print myLast, myCFile                     '<<< Aggiungere per prova
    Workbooks.Open (myDir & myCFile)
' etc etc
Eseguite la macro un paio di volte (ripulendo a mano il contenuto del foglio di output); poi dall'editor delle macro premete Contr-g per aprire la "finestra Immediata"; copiate un paio di blocchi che cominciano con la riga >>>>>>> e incollate nel vostro prossimo messaggio, indicando ovviamente anche se la macro ha fatto quello che vi aspettavate oppure no.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 07/03/16 11:41

si blocca in questo punto, almeno a me
Immagine
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48


Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 07/03/16 12:13

allora aggiungo una specifica, almeno per quanto riguarda me.
io ho un file nascosto "personal.xlb" che mi serve per avere sempre tutte le macro disponibili su qualsiasi foglio apro.
allora per caso l'ho lasciato visibile, e magia, la macro mi ha accodato tutti i file (per prova erano solo due) nella file personal.xlb invece che su accodare.xlsx
spero che mi essermi spiegato, e che possa essere utile.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 07/03/16 12:17

ora si vede l'immagine?
http://imgur.com/kZy9g5o
Ultima modifica di mirmidone21 su 07/03/16 12:22, modificato 1 volte in totale.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 07/03/16 12:19

Hai sbagliato, perche' le istruzioni dicevano "Crea un file nuovo e al suo interno inseriscigli in Modulo1 del vba questo codice..."

Comunque la macro potrebbe andare in crisi se qualcuno dei fogli da importare fosse vuoto; per questo e' meglio aggiungere un If attorno all'If centrale della macro; cioe':
Codice: Seleziona tutto
If myused > 0 Then       'IF aggiunto
    If myLast = 0 Then
        ActiveSheet.Range("A1:J" & myused).Copy ThisWorkbook.Sheets(myDest).Cells(myLast + 1, 1)
    Else
        ActiveSheet.Range("A2:J" & myused).Copy ThisWorkbook.Sheets(myDest).Cells(myLast + 1, 1)
    End If
End If                       'End dell' IF aggiunto

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 07/03/16 12:20

Non si vede ancora, ma leggi il messaggio precedente
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 07/03/16 12:50

ho letto. ed ho anche riletto le istruzioni.
ho creato un nuovo file, e creato una macro in quel file.
tutto funziona perfettamente anche senza aggiungere le istruzioni nel caso un file fosse vuoto.
avevate ragione voi, ovviamente.
mi resta solo il problema come rendere sempre disponibile la macro per qualsiasi cartella venga aperta.
infatti la macro resta solo nel file specifico, e non è visibile nel file personal.xlsb dove raccolgo tutte le macro che mi servono.
si accettano suggerimenti, e vi ringrazio infinitamente della pazienza e delle lezioni che ci date.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi Anthony47 » 08/03/16 00:49

Questa "RIEP2" puo' trovarsi in qualsiasi posizione e crea il riepilogo in un Nuovo File:
Codice: Seleziona tutto
Sub RIEP2()
Dim myDir As String, myCFile As String, myLast As Long, myDest As String
Dim newWB As Workbook
'
'Crea il Riepilogo su un NUOVO WORKBOOK
'
myDest = "Foglio1"                  '<<< Il Foglio in cui si creera' il riepilogo
myDir = "D:\PIPPO\Archivio\"        '<<< La dir dei file da consolidare (con \ finale)
'
Application.EnableEvents = False
Debug.Print vbCrLf & vbCrLf & ">>>>>>>>>> "    '<<< Aggiungere per prova
Set newWB = Workbooks.Add           '<<< Crea un nuovo Workbook
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
'On Error Resume Next
    myLast = getLast
Debug.Print myLast, myCFile                     '<<< Aggiungere per prova
    Workbooks.Open (myDir & myCFile)
    Sheets(1).Select
    myused = getLast
    If myused > 0 Then       'IF aggiunto
        If myLast = 0 Then
            ActiveSheet.Range("A1:J" & myused).Copy newWB.Sheets(myDest).Cells(myLast + 1, 1)
        Else
            ActiveSheet.Range("A2:J" & myused).Copy newWB.Sheets(myDest).Cells(myLast + 1, 1)
        End If
    End If                       'End dell' IF aggiunto
    ActiveWorkbook.Close False
myCFile = Dir
Loop
Application.EnableEvents = True
MsgBox ("Riepilogo completato su nuovo File...")
End Sub

La Function getLast() rimane come era gia' stata proposta.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Importare PIU' FILE di EXCEL in uno solo accodando le ri

Postdi mirmidone21 » 08/03/16 14:27

tutto a posto funziona perfettamente e l'ho inseriti nel file personal.xlsb così è utilizzabbile da qualsiasi cartella venga aperta.

Di nuovo grazie, e alla prossima
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48


Torna a Applicazioni Office Windows


Topic correlati a "Importare PIU' FILE di EXCEL in uno solo accodando le righe":


Chi c’è in linea

Visitano il forum: Gianca532011 e 17 ospiti