Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Importare da fogli diversi

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

[Excel] Importare da fogli diversi

Postdi ahidai » 13/02/12 14:54

Riferimento viewtopic.php?f=26&t=94502
Un ciao a tutti.
Anche se il topic non è stato aperto da me e siccome potrebbe interessarmi/vi in futuro, ho provato a dare un'occhiata in giro ed ho trovato questo:
Codice: Seleziona tutto
 Sub ImportaDati()
 
 Dim percorso As String
    percorso = ThisWorkbook.Path & "\"

    Dim nomeFile As String
    Dim WB As Workbook
    Dim WS As Worksheet
   
    nomeFile = Dir(percorso)
    Do While nomeFile <> ""
        If nomeFile <> ThisWorkbook.Name Then
            Set WB = Application.Workbooks.Open(percorso & nomeFile)
            Set WS = WB.Worksheets(1)
            WS.Name = "Importa Dati"
            WS.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
            WB.Close False
        End If
        nomeFile = Dir
    Loop
   
    MsgBox "Fogli Importati.", vbInformation, "OK"

End Sub

Importa dati da diversi files di excel su un solo file excel.
Il problema è che mi copia e mi crea altri fogli e non li copia su un'unico foglio in sequenza.
Come si potrebbe modificare questa macro in modo che mi metta in seguenza tutti i fogli escludendo la riga A1 perchè è vuota e che formatta la cella con testo tradizionale tipo Arial 10, allineamento a sinistra, testo a capo e formato righe/colonne con un valore predefinito su un'unico foglio?
Grazie per le risposte.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Sponsor
 

[Excel] Importare da fogli diversi

Postdi Anthony47 » 13/02/12 16:02

Ho separato la tua domanda dalla discussione di AlexsanderAle, perche' mi sembra una domanda diversa.
Tuttavia manca la descrizione del formato dati di input e quello di output, l' idea di dedurlo da una macro che non fa quello che ti aspetti non mi eccita...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 13/02/12 22:21

Anthony47 ha scritto:Ho separato la tua domanda dalla discussione di AlexsanderAle, perche' mi sembra una domanda diversa.
Tuttavia manca la descrizione del formato dati di input e quello di output, l' idea di dedurlo da una macro che non fa quello che ti aspetti non mi eccita...

Ciao

Ciao Anthony e grazie per la risposta, la descrizione del formato dati sia di imput che di output è: http://www.mediafire.com/?pgxlstv943nsuha , cioè hanno le stesse colonne, come dicevo nel topic aperto da AlexanderAle, ho importati 200 fogli con il sito da te indicato "http://www.onlineocr.net/" in file excel, i quali 200 fogli hanno le stesse colonne ma variano le righe con la prima riga vuota, ecco tutti i 200 fogli li vorrei in un'unico foglio in modo sequeziale, cioè i 200 fogli prodotti dal sito hanno come nome pippo_pagina_001.xls, pippo_pagina_002.xls, pippo_pagina_003.xls fino a 200.
In effetti un solo file con un 1 solo foglio su cui vengono ricopiati i 200 fogli in questo modo:
primo file: pippo_pagina_001.xls;
secondo file: pippo_pagina_002.xls;
terzo file: pippo_pagina_003.xls;
ecc... fino a200.
Spero di essere stato chiaro e mi scuso se non lo sono stato....
Grazie e buona serata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 14/02/12 00:39

Caio,
riepilogo per vedere se ho capito bene:

1. tu hai, in una stessa cartella del tuo PC, 200 file excel

2. questi 200 file hanno tutti la stessa struttura dati, le colonne occupate sono nell'intervallo "A:G"

3. il numero di righe di ogni file può essere diverso nei vari file

4. la prima riga di ogni file non va copiata

5. tu vuoi unire tutti questi 200 file in un solo file e tutti i dati devono essere "accodati" in un solo foglio

6. la prima riga di questo nuovo foglio deve avere le intestazioni seguenti
MAT. in "A1"
NR. in "B1"
DOMANDA in "C1"
A in "D1"
B in "E1"
C in "F1"
D in "G1"

Confermi ???
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 14/02/12 01:33

Ciao,
ho preso delle macro che avevo e con copia, taglia, incolla ho adattato quanto segue
Codice: Seleziona tutto
Option Explicit
Public MioFile As String, MioPercorso As String, Wb1 As String, Wb2 As String, UR As Integer

Sub Leggi_File()
    Dim I As Integer
    I = 0
    Application.ScreenUpdating = False
    Foglio1.Select
    [A1] = "MAT."
    [B1] = "NR."
    [C1] = "DOMANDA"
    [D1] = "A"
    [E1] = "B"
    [F1] = "C"
    [G1] = "D"

    MioPercorso = "D:\Temp\" ' << -------------- QUI devi inserire il tuo percorso
    MioFile = Dir(MioPercorso & "QUIZ*.xls") ' << -------------- QUI al posto di "QUIZ" devi inserire la RADICE del nome dei tuoi FILE
    Do While MioFile <> ""
        I = I + 1
       
        Copia_Dati
       
        MioFile = Dir()
    Loop

    Columns("A:A").ColumnWidth = 5
    Columns("B:B").ColumnWidth = 5
    Columns("C:C").ColumnWidth = 44
    Columns("D:D").ColumnWidth = 30
    Columns("E:E").ColumnWidth = 25
    Columns("F:F").ColumnWidth = 25
    Columns("G:G").ColumnWidth = 30
   
    Columns("C:G").Select
    With Selection
        .VerticalAlignment = xlTop
        .WrapText = True
    End With
    [A1].Select
   
    Application.ScreenUpdating = True
    MsgBox "Sono stati COPIATI i dati di   '" & I & "'   file" & Chr(10) & Chr(10) & _
        "presenti nel percorso:  '" & MioPercorso & "'"
End Sub

Sub Copia_Dati()
    Wb1 = ActiveWorkbook.Name
    Workbooks.Open Filename:=MioPercorso & MioFile
    Wb2 = ActiveWorkbook.Name
    UR = Range("A" & Rows.Count).End(xlUp).Row
   
    Range("A2", Cells(UR, 7)).Copy
    Windows(Wb1).Activate
    Sheets("Foglio1").Select
    UR = Range("A" & Rows.Count).End(xlUp).Row + 1
    Range("A" & UR).Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
    Windows(Wb2).Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Application.DisplayAlerts = True
    Windows(Wb1).Activate
End Sub


Copia questo codice in un nuovo file excel ed eseguilo, ricordati di modificare le due istruzioni con la
"<< --------------"

Prova e ...
Ultima modifica di ricky53 su 14/02/12 01:37, modificato 2 volte in totale.
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 14/02/12 01:34

Ciao
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 13:41

Ciao Ricky, dopo 1 giorno di prove ci sono riusciuto (anche se in parte) grazie alla tua macro.
Allora ho i 200 files in un'unica cartella, dove ho messo anche il file che mi deve importare i dati, quindi siccome non ho capito (MioFile = Dir(MioPercorso & "*.xls") ' QUI al posto di "QUIZ" devi inserire la RADICE del nome dei tuoi FILE) ho messo "*.xls", ha funzionato tutto bene fino a quando mi dice che il file dove importo i dati è già aperto e che riaprendolo andranno perse tutte le modifiche, chiaramente se metto come radice "*.xls" mi apre e copia tutti i file compreso il file che uso per importare i dati.
Quindi non so che tipo di RADICE mettere considerando che i file che devo importare sono cosi chiamati:
- 1202130110_DOMANDE QUIZ 14 AA.MM 2011 _Pagina_001.xls;
- 1202120040_DOMANDE QUIZ 14 AA.MM 2011 _Pagina_002.xls;
- 1202120041_DOMANDE QUIZ 14 AA.MM 2011 _Pagina_003.xls e cosi via fino a 200.
Si può notare che variano i numeri all'inizio e le pagine alla fine. HELP ME!!!!!!
Ho risolto mettendo il file che mi serve per importare i dati in un'altra cartella.
La cosa che non riesco a fare è che una volta importati i files, me li copia nelle varie righe in questo modo:
Ai sensi dell'art. 131 del Trattato UE, con l'instaurazione
dell'unione doganale gli Stati membri della comunità
intendono...
e non così:
Ai sensi dell'art. 131 del Trattato UE, con l'instaurazione dell'unione doganale gli Stati membri della comunità intendono...
cioè senza spazi.
Quindi è possibile importare/copiare in modo che non ci siano SPAZI VUOTI.
Grazie per l'aiuto.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi Anthony47 » 15/02/12 14:44

Dall' esempio che ha fatto ahidai potrebbe succedere che le varie colonne siano importate su un numero di righe differente tra di loro (es col A 1 riga, col C su 2 righe).
Suggerisco pertanto di calcolare UR come il max tra le "ultime righe" di col A:G.

Per questo, in Copia_Dati invece di UR = Range("A" & Rows.Count).End(xlUp).Row + 1 si potrebbe usare
Codice: Seleziona tutto
For I = 1 To 7
Matr1(I) = Cells(10000, I).End(xlUp).Row
Next I
UR = Application.WorksheetFunction.Max(Matr1())

Richiede questa aggiunta in testa
Codice: Seleziona tutto
Sub Copia_Dati()
Dim Matr1(1 To 7) As Integer      '<<< AGGIUNTA
    Wb1 = ActiveWorkbook.Name

Questo intervento non risolve il problema segnalato nell' utimo post di ahidai (vedi sopra).

Ciao a tutti
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 15:18

[quote="Anthony47"]Dall' esempio che ha fatto ahidai potrebbe succedere che le varie colonne siano importate su un numero di righe differente tra di loro (es col A 1 riga, col C su 2 righe).
Suggerisco pertanto di calcolare UR come il max tra le "ultime righe" di col A:G.

Per questo, in Copia_Dati invece di UR = Range("A" & Rows.Count).End(xlUp).Row + 1 si potrebbe usare
Codice: Seleziona tutto
For I = 1 To 7
Matr1(I) = Cells(10000, I).End(xlUp).Row
Next I
UR = Application.WorksheetFunction.Max(Matr1())


Ciao Anthony, ho provato a cambiare quanto proposto sopra, ma mi da errore di compilazione variabile non definita.
Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi Anthony47 » 15/02/12 15:25

Quale e' la variabile non definita?
Hai aggiunto la Dim di Matr1, come descritto alla voce "Richiede questa aggiunta", vero?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 15/02/12 15:32

Ciao,
premetto che vado a memoria perchè non ho il file con me e il firewall non mi consente di scaricarlo.

Anthony:
vero l’ultima riga della colonna "A" potrebbe non essere sempre piena La tua propsota va benissimo.

Ahidai:
si la RADICE con i tuoi file non è univoca. Andava (e lo hai fatto) spostato il file su un'altra cartella.

I dati nel file originale erano già in celle distinte. Il codice che ti ho inviato copia l'intervallo selezionato senza fare null’altro.
Sul file originale i dati come erano?
Puoi inviare il file che ti ha creato i problemi e questa sera, quando potrò scaricare il file, controllo e ... ci risentiamo.
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 15:46

ricky53 ha scritto:Ciao,
premetto che vado a memoria perchè non ho il file con me e il firewall non mi consente di scaricarlo.

Anthony:
vero l’ultima riga della colonna "A" potrebbe non essere sempre piena La tua propsota va benissimo.

Ahidai:
si la RADICE con i tuoi file non è univoca. Andava (e lo hai fatto) spostato il file su un'altra cartella.

I dati nel file originale erano già in celle distinte. Il codice che ti ho inviato copia l'intervallo selezionato senza fare null’altro.
Sul file originale i dati come erano?
Puoi inviare il file che ti ha creato i problemi e questa sera, quando potrò scaricare il file, controllo e ... ci risentiamo.

Ok Ricky, stasera invio il file che mi ha creato, adesso ho gli stessi problemi tuoi "firewall".
Ciao a tutti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 18:26

Ciao, ecco il file http://www.mediafire.com/?vfefp3hn05en6eq
Grazie per l'aiuto.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 15/02/12 18:43

Ciao,
ma questo file ha una struttura diversa dal tuo iniziale?
Sicuro che è il file di partenza e non quello di arrivo che vorresti aver nel formato mostrato?

Le frasi qui sono tutte in una cella nell'altro file erano in celle diverse.

Esempio EDU 0406 vedi sotto le tue intestazioni di colonna A,B,C,D le frasi sono nelle righe 6,7 e 8
Nel file nuovo invece tuttii dati sono nella riga 407

Puoi chiarire.
Grazie.
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 19:07

ricky53 ha scritto:Ciao,
ma questo file ha una struttura diversa dal tuo iniziale?
Sicuro che è il file di partenza e non quello di arrivo che vorresti aver nel formato mostrato?

Le frasi qui sono tutte in una cella nell'altro file erano in celle diverse.

Esempio EDU 0406 vedi sotto le tue intestazioni di colonna A,B,C,D le frasi sono nelle righe 6,7 e 8
Nel file nuovo invece tuttii dati sono nella riga 407

Puoi chiarire.
Grazie.

Si scusami, avevo capito che ti serviva il file di arrivo con la macro, in un file rar ho messo alcuni files di partenza:
http://www.mediafire.com/?wwadcdr1n87eq89
Grazie e buona serata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 15/02/12 19:20

Ciao,
con questi file tutto viene inserito come volevi: in una sola cella.
Non capisco come tu abbia avuto i dati in celle separate.

Saranno altri file che hai tu con il problema e questi non erano nell'ultmio RAR.

Controlla e ... invia,eventualemente, il file con il problema ... in modo da provarlo 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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 19:28

ricky53 ha scritto:Ciao,
con questi file tutto viene inserito come volevi: in una sola cella.
Non capisco come tu abbia avuto i dati in celle separate.

Saranno altri file che hai tu con il problema e questi non erano nell'ultmio RAR.

Controlla e ... invia,eventualemente, il file con il problema ... in modo da provarlo e ...

Ciao, forse mi sono espresso male nel post precedente, allora volevo dire che l'importazione dei dati avviene bene, il problema è che se noti nelle celle (in alcune celle) c'è dello spazio tra una frase e l'altra, come per esempio nella 1 riga "prima domanda" :

Ai sensi dell'art. 131 del Trattato UE, con l'instaurazione
dell'unione doganale gli Stati membri della comunità
intendono...

ci sono degli spazi tra la parola l'instaurazione e dell'unione come anche tra comunità e intendono.

Quindi chiedevo se è possibile importare/copiare in modo che non ci siano SPAZI VUOTI.
Grazie ancora per la tua disponibilità. Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi ricky53 » 15/02/12 22:38

Ciao,
adesso ho capito: non è uno spazio.
E' presente anche sui file di partenza.
Chi ha inserito i dati nel file originale a fronte di testo lungo, per separare su più righe il testo contenuto nelle celle, ha utilizzato "Alt+Invio" che fa andare a capo il testo posto a destra rispetto al cursore.
E' una funzionalità di excel, spesso è comoda.

Perchè lo vuoi togliere?
Visivamente non crea problemi.
Senza questo carattere la visualizzazione cambia modifichi la larghezza delle colonne.
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Importare da fogli diversi

Postdi ahidai » 15/02/12 22:53

ricky53 ha scritto:Ciao,
adesso ho capito: non è uno spazio.
E' presente anche sui file di partenza.
Chi ha inserito i dati nel file originale a fronte di testo lungo, per separare su più righe il testo contenuto nelle celle, ha utilizzato "Alt+Invio" che fa andare a capo il testo posto a destra rispetto al cursore.
E' una funzionalità di excel, spesso è comoda.

Perchè lo vuoi togliere?
Visivamente non crea problemi.
Senza questo carattere la visualizzazione cambia modifichi la larghezza delle colonne.


Ciao Ricky, allora lo devo togliere perchè questo file lo devo inserire in un programma di quiz e mi crea problemi a livello visivo, cioè mi sbalza la domanda con le relative risposte.
Spero che sia possibile togliere questi spazi... mi farebbe risparmiare molte ore di lavoro...
Comunque ancora grazie e buona serata....
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: [Excel] Importare da fogli diversi

Postdi Anthony47 » 15/02/12 23:01

Quello che vedi e' dovuto al fatto che probabilmente hai importato un pdf che quel testo lo riportava su piu' righe, e io farei i complimenti al converter per aver importato fedelmente (cosa hai usato??).

Se ti da fastidio, allora puoi sostituire gli "Alt-Enter" su tutto il foglio unificato con un codice come questo:
Codice: Seleziona tutto
For Each Cell In ActiveSheet.UsedRange
Cell.Value = Replace(Cell.Value, Chr(10), " ")
Next Cell
Va eseguito avendo come foglio attivo il foglio unificato; poi formatti le colonne e i testi a piacimento.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Importare da fogli diversi":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti