Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

importare dati di tanti files txt in excel

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 dati di tanti files txt in excel

Postdi newgal » 10/02/10 14:20

salve a tutti,
ho necessità di convertire dati in formato txt contenuti in 2300 files circa in excel.
ovviamente la procedura classica di import singolo sarebbe disumana quindi......chiedo una procedura per effettuare tale operazione.
il file txt tipico (hanno tutti la stessa struttura) è il seguente:

64 65 139 1016 2421 12222 345
47 55 1012 2202 31744 387
87 99 37 1018 2128 37564 354
99 120 34 973 2299 36328 368

dove la prima colonna indica il n del disco, la seconda il peso, la terza la durata, la quarta la categoria di appartenenza, la quinta un codice di riferimento.
le restanti colonne non contano e non devono essere inserite in excel.

il fomato finale deve essere:
allineare in una riga i dati contenuti nelle prime cinque colonne (tranne le ultime due), e tutti i dati delle righe seguenti.
cioè, per un file di 4 righe, metterlo in excel in una sola.
a seguire (nelle altre righe) riportare i dati contenuti nei restanti files txt.
cioè, per ogni riga in excel mettere un file txt e così via.
come fare???
sono a completo digiuno di visual basic e creazione di macro.
help

grazie a tutti
newgal
Newbie
 
Post: 1
Iscritto il: 09/02/10 12:46

Sponsor
 

Re: importare dati di tanti files txt in excel

Postdi Anthony47 » 10/02/10 16:59

Ciao newgal e benvenuto nel forum.
Per iniziare fatti su Foglio1 l' elenco dei file da processare seguendo le indicazioni scritte qui: viewtopic.php?f=26&t=75455#p428651
Modificherai il comando da dare in "ATTRIB *.txt /s >C:\pippo123.txt", senza gli apici.
(ci sono altri metodi piu' veloci descritti nel forum, ma questo per te puo' funzionare)

In questo modo avrai in col B, da B1, tutti i file che sono da manipolare; fai una verifica approfondita che ci siano tutti e non ci siano file estranei, perche' la macro lavorera' su questo elenco. Se c' e' qualche file che vuoi togliere basta eliminare tutta la riga, lasciando l' elenco senza vuoti intermedi. Se VUOI FARE UN TEST PRELIMINARE, ad esempio, basta lasciare in questo elenco solo pochi files.

Quindi userai questa macro:
Codice: Seleziona tutto
Sub Importzzag()
Sheets("Foglio2").Select    'Foglio su cui scrivere
Cells.Clear
ReadTxt:
I = I + 1
If Sheets("Foglio1").Range("B" & I).Value = "" Then Exit Sub
Open Sheets("Foglio1").Range("B" & I).Value For Input As #1
Ri = 0
Do While Not EOF(1)
    Ri = Ri + 1
    Line Input #1, Riga
    Cells(I, 1 + 6 * (Ri - 1)).Select
    ActiveCell.Value = Riga
    Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 9), _
        Array(7, 9)), TrailingMinusNumbers:=True
    Loop
Close #1
GoTo ReadTxt
End Sub

Da excel, Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copi la macro e la incolli nel frame bianco di dx.
Torni a excel e, dopo aver creato l' elenco dei 2300 files (o un subset piu' corto per prova), lanci la macro: Alt-F8, selezioni Importzzag dall' elenco, premi Esegui.
La macro prevede che il foglio con l' elenco file si chiami Foglio1 e crea il risultato sul foglio Foglio2, che viene precedentemente AZZERATO.

Ciao, fai sapere.
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "importare dati di tanti files txt in excel":


Chi c’è in linea

Visitano il forum: Marius44, raimea e 16 ospiti