PDA

Visualizza versione completa : [EXCEL] Inserire + file in un file


interceptor
07-10-2005, 11.35.43
Ho creato un certo numero di file exel contenenti 1 foglio di dati, adesso mi sarebbe pi comodo avere un unico file che contenga tanti fogli di dati quanti sono i file, se possibile, come posso fare per importarli in un solo colpo senza copia\incolla faticosissimo???

Cricchia
07-10-2005, 12.30.36
sicuramente lo puoi fare con una macro..
la cosa necessaria sapere il nome dei file da aprire e da cui copiare i fogli.

Oppure, fai cos..
metti (o copia) tutti i file che devi aprire, in una sola cartella;
apri un nuovo foglio di lavoro con un unico foglio che si chiama Foglio1;
dalla riga 1 della colonna A crea la lista con il nome dei file dai quali devi prelevare i fogli, tipo:

nome_file_1.xls
nome_file_2.xls
...

nella cella B2 scrivi il percorso della dir che contiene i file, es:
c:\Nome_dir

La macro questa:

Sub Importa()
file_attivo = ActiveWorkbook.Name
Range("a1").Select
Selection.End(xlDown).Select
ultima_riga = ActiveCell.Row
Range(Cells(1, 1), Cells(ultima_riga, 1)).Select
For Each cella In Selection.Cells
file_temp = cella.Value
Workbooks.Open (Range("b1").Value & "\" & cella), ReadOnly:=True
For foglio = 1 To Sheets.Count
Sheets(foglio).Copy after:=Workbooks(file_attivo).Sheets(1)
Next foglio
Workbooks(file_temp).Close False
Foglio1.Select
Next cella
End Sub


Praticamente ti apre ogni foglio che hai messo nella colonna A (mi raccomando non saltare righe), copia tutti i fogli contenuti in ciascun file e li incolla sul file. Poi, naturalmente elimini il Foglio1 e la macro e il tuo file pronto! ;)

spero che funzioni.. io fatto una prova e non mi ha dato problemi...

interceptor
07-10-2005, 17.28.31
Originariamente inviato da Cricchia
sicuramente lo puoi fare con una macro..
la cosa necessaria sapere il nome dei file da aprire e da cui copiare i fogli.

Oppure, fai cos..
metti (o copia) tutti i file che devi aprire, in una sola cartella;
apri un nuovo foglio di lavoro con un unico foglio che si chiama Foglio1;
dalla riga 1 della colonna A crea la lista con il nome dei file dai quali devi prelevare i fogli, tipo:

nome_file_1.xls
nome_file_2.xls
...

nella cella B2 scrivi il percorso della dir che contiene i file, es:
c:\Nome_dir

La macro questa:

Sub Importa()
file_attivo = ActiveWorkbook.Name
Range("a1").Select
Selection.End(xlDown).Select
ultima_riga = ActiveCell.Row
Range(Cells(1, 1), Cells(ultima_riga, 1)).Select
For Each cella In Selection.Cells
file_temp = cella.Value
Workbooks.Open (Range("b1").Value & "\" & cella), ReadOnly:=True
For foglio = 1 To Sheets.Count
Sheets(foglio).Copy after:=Workbooks(file_attivo).Sheets(1)
Next foglio
Workbooks(file_temp).Close False
Foglio1.Select
Next cella
End Sub


Praticamente ti apre ogni foglio che hai messo nella colonna A (mi raccomando non saltare righe), copia tutti i fogli contenuti in ciascun file e li incolla sul file. Poi, naturalmente elimini il Foglio1 e la macro e il tuo file pronto! ;)

spero che funzioni.. io fatto una prova e non mi ha dato problemi...

caro genietto dell'excel grazie, vorrei puntualizzare alcune questioni che mi si sono presentate realizzando il tuo suggerimento, magari servisse in futuro a qualche altro wintricker:

1) la macro funziona purch il file da inserire abbia 1 solo foglio, altrimenti copia i dati per il numero di fogli presenti nel file;

2) il percorso deve essere indicato nella cella B1.

per il resto grazie.

Cricchia
07-10-2005, 17.34.48
Originariamente inviato da interceptor


caro genietto dell'excel grazie, vorrei puntualizzare alcune questioni che mi si sono presentate realizzando il tuo suggerimento, magari servisse in futuro a qualche altro wintricker:

1) la macro funziona purch il file da inserire abbia 1 solo foglio, altrimenti copia i dati per il numero di fogli presenti nel file;

2) il percorso deve essere indicato nella cella B1.

per il resto grazie.


per il punto 1 hai ragione... ma pensando che volessi copiare tutti i fogli, l'ho fatto apposta... ;)
per il punto due hai ragione (e due! :p) ... ho sbagliato a riportare/trascrivere la cella ma come si vede dalla macro era effettivamente la B1 :p

e cmq, grazie per il "genietto" :):)

LoryOne
10-10-2005, 18.24.24
Non era pi semplice utilizzare un' area di lavoro ?