Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL- importare e accodare files *.txt in un file *.xls

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 e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 11:43

Salve a tutti,
ho un problema da risolvere e non so usare le macro di excel. Ho dato un'occhiata alle altre discussioni in questo forum che proponevano problemi simili ma non sono riuscita a fare granchè.
Seguendo i suggerimenti di quelle discussioni ho registrato una macro mentre facevo le operazioni necessarie al mio scopo ed è la seguente:

Sub importaeaccoda()
'
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\ARCHIVIO\doc0.txt", Destination:=Range( _
"A1"))
.Name = "site0pars"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Range("A3").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\ARCHIVIO\doc1.txt", Destination:=Range( _
"A3"))
.Name = "site1pars"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Mi rendo conto che non deve essere difficile perchè il file di testo ha una struttura fissa (sono 2 righe x 13 colonne) e delimitata (tab), ma la procedura deve essere ripetuta per N volte tante quanti sono i files *.txt. Immagino di dover impostare un ciclo ma non so come fare. Come dicevo sono a zero ancora con le macro :(
Grazie in anticipo a chi vorrà aiutarmi e spero di essere stata chiara.
sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Sponsor
 

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi Flash30005 » 21/05/09 12:13

Quale sistema operativo hai?
Versione office?
Puoi utilizzare comandi dos e file batch? (tipo file.bat etc)?

Ciao

P.s. potresti inviare un tuo file dati come esempio di file testo?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi Flash30005 » 21/05/09 13:09

Supponendo che hai Xp, Office qualsiasi e che i file batch siano eseguibile fai queste operazioni (poi le adatti alla tua eseigenza)

1) Crei una cartella sulla root di C:\ con nome Sandy e avrai C:\Sandy
2) In questa cartella crei un documento di testo e all'interno scriverai "dir C:\Sandy\Dati\*.txt /b /O:GN > C:\Sandy\dir.txt" (senza apici)
3) Rinomini questo file in Elenco.bat
4) Crei una sotto cartella che chiamerai Dati (C:\Sandy\Dati\) all'interno della quale metterai i tuoi file dati con estensione .txt
5) Crei una sotto cartella che chiamerai Archivio (C:\Sandy\Dati\Archivio\) dove saranno collocati tutti i file una volta imporati in excel (per eviatare di accodare gli stessi file)
A questo punto apri un foglio di excel
e in un modulo inserirai questa macro
Codice: Seleziona tutto
Sub ImportaDati()
Percorso = "C:\Sandy\"   '<<< qui puoi cambiare il percorso ma va cambiato anche nel file Elenco.bat

NFile = ""
abc = Shell(Percorso & "Elenco.bat", 0)
Open Percorso & "Dir.txt" For Input As #1
RF = Range("A" & Rows.Count).End(xlUp).Row + 1
If Range("A" & Rows.Count).End(xlUp).Row = 1 Then RF = 1
Do Until EOF(1)
     Line Input #1, NFile
     NFileEx = NFile
     Open Percorso & "Dati\" & NFileEx For Input As #2
     Do Until EOF(2)
          Line Input #2, Riga
            Worksheets("Foglio1").Cells(RF, 1).Value = Riga
                Cells(RF, 1).Select
    Selection.TextToColumns Destination:=Cells(RF, 1), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        )), TrailingMinusNumbers:=True
            RF = RF + 1
    Loop
    Close #2
    inpfile = Percorso & "Dati\" & NFileEx
    outfile = Percorso & "Dati\Archivio\" & NFileEx
'On Error Resume Next
FileCopy inpfile, outfile
'On Error GoTo 0
Kill Percorso & "Dati\" & NFileEx
Loop
Close #1
    Columns("A:M").Select
    Columns("A:M").EntireColumn.AutoFit
    Range("A1").Select
End Sub

La esegui e controlli se fa al caso tuo

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi ricky53 » 21/05/09 13:45

Ciao Sandy,
prima di tutto benvenuta nel forum.

Consiglio: quando si inserisce una discussione la si deve dettagliare al massimo descrivendo i passi che si vuole eseguire e corredare, ove necessario, con dati , riferimenti alle celle ed, eventualmente, allegare un file di esempio (attenzione ai dati riservati).

Prova con la soluzione proposta da Flash e poi fatti sentire.

Ciao da Ricky53
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 e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 14:51

Chiedo scusa, mi sono dovuta allontanare dal pc.
Grazie per l'aiuto Flash proverò a vedere come me la cavo con la macro che hai impostato e mi rifaccio viva.

Per rispondere comunque alle domande di Flash: MS windows XP 2002, Excel 2003, posso utilizzare il DOS.
Anche se tardivo mando in allegato un file dati (non ci sono dati sensibili) come esempio, mi spiace Ricky53 sono una novellina anche con il forum!
Il contenuto del file doc0.txt deve essere incollato nella cella A1 di un foglio excel, quello del file doc1.txt deve essere incollato nella cella A3 dello stesso foglio excel e così via per 271 files doci.txt.
Grazie, ben trovati!
Sandy
Allegati

[L’estensione txt è stata disattivata e non puó essere visualizzata.]

sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi ricky53 » 21/05/09 15:21

Ciao,
alcune domande:
1. i tuoi file hanno tutti due righe?
2. la prima è la testata uguale per tutti i file? se così non occorre copiarla!
3. hai la necessità di sepere i dati da quale file txt provengono?

Ciao da Ricky53
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 e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 15:27

Ciao,
1. si
2. hai ragione, basta la seconda :oops:
3. in effetti si visto che dovrò ripetere l'operazione per altri 271 files *.txt contenenti gli stessi dati ma provenienti da altre elaborazioni (sono uscite di un progr statistico)

Intanto sto provando la macro di Flash...

Sandy
sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi Anthony47 » 21/05/09 15:39

Benvenuta anche da parte mia.
mi spiace Ricky53 sono una novellina anche con il forum!
Non ti preoccupare, tutti i nuovi arrivati hanno diritto di imparare come funziona il forum usandolo e non guardandolo dall' esterno.

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

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 15:54

Grazie Anthony47 per l'accoglienza,
mi sono iscritta proprio perchè avevo trovato delle discussioni simili che mi sono sembrate molto interessanti ;) e mi sono buttata.
La macro di Flash (GRAZIE) è perfetta (e non avevo dubbi!), a parte un piccolo problema che dipende da me però: alcuni dei files *.txt hanno un campo in più dovuto credo ad un errore nel mio progr statistico. Lo verificherò.
Ora me la devo studiare per cominciare a muovere i primi passi nel mondo delle macro.

Sandy
sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi Flash30005 » 21/05/09 15:56

Alla luce delle nuove info ho modificato la macro
con questa metterai in testata quello che vuoi (ora riporta le stesse stringhe basta cambiarle nel codice) e nella colonna N metterà il nome del file origine
Codice: Seleziona tutto
Sub ImportaDati()
Percorso = "C:\Sandy\"

NFile = ""
abc = Shell(Percorso & "Elenco.bat", 0)
Start = Timer
pausa = 1

Attendi:
If Timer < Start + pausa Then GoTo Attendi

Open Percorso & "Dir.txt" For Input As #1
RF = Range("A" & Rows.Count).End(xlUp).Row + 1
'If Range("A" & Rows.Count).End(xlUp).Row = 1 Then Rf = 1
Do Until EOF(1)
     Line Input #1, NFile
     NFileEx = NFile
     Open Percorso & "Dati\" & NFileEx For Input As #2
     Do Until EOF(2)
If RF - 1 = 1 Then
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Sex"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Fvalue"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "ProbF"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "a"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "ase"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "lambda"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "lambdase"
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "gama"
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "gamase"
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "b1se"
    Range("L1").Select
    ActiveCell.FormulaR1C1 = "sitecod"
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "site"
    Range("N1").Select
    ActiveCell.FormulaR1C1 = "File"
    Range("O1").Select
    Line Input #2, Riga
    Line Input #2, Riga

Else
    Line Input #2, Riga
    Line Input #2, Riga
End If

    Worksheets("Foglio1").Cells(RF, 1).Value = Riga
    Cells(RF, 1).Select
    Selection.TextToColumns Destination:=Cells(RF, 1), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        )), TrailingMinusNumbers:=True
    Worksheets("Foglio1").Cells(RF, 14).Value = NFileEx
    RF = RF + 1
    Loop
    Close #2
    inpfile = Percorso & "Dati\" & NFileEx
    outfile = Percorso & "Dati\Archivio\" & NFileEx
'On Error Resume Next
FileCopy inpfile, outfile
'On Error GoTo 0
Kill Percorso & "Dati\" & NFileEx
Loop
Close #1
    Columns("A:M").Select
    Columns("A:M").EntireColumn.AutoFit
    Range("A1").Select
    Kill Percorso & "Dir.txt"
End Sub
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 16:12

GRAZIE FLASH E' FANTASTICO!
E' molto frustrante toccare con mano quanto non so... ma vi assicuro che sono testarda e voglio imparare :-)
Grazie a tutti per la disponibilità.
Per il lavoro che faccio è fondamentale conoscere VB, perchè devo gestire moltissimi dati o grafici (in excel o word) tutti simili tra loro come in questo caso. Mi potete suggerire cosa leggere/studiare in materia?
Sandy
sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi Flash30005 » 21/05/09 16:25

sandy2066 ha scritto:GRAZIE FLASH E' FANTASTICO!
E' molto frustrante toccare con mano quanto non so... ma vi assicuro che sono testarda e voglio imparare :-)
Grazie a tutti per la disponibilità.
Per il lavoro che faccio è fondamentale conoscere VB, perchè devo gestire moltissimi dati o grafici (in excel o word) tutti simili tra loro come in questo caso. Mi potete suggerire cosa leggere/studiare in materia?
Sandy


Non so consigliarti libri o manuali, anche se ce ne sono diversi in vendita, ma se hai volontà e ti applichi con l'aiuto di questo forum (Anthony in primis), dall'Help in linea, dalle registrazioni delle macro, per poi adattarle, penso che non diventerai un'espertissima programmatrice ma riuscirai a risolvere molti problemi (se non tutti) di vita quotidiana ;)
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi ricky53 » 21/05/09 16:43

Ciao,
in rete trovi diversi siti o altri fourm (che non ti cito per correttezza) che hanno vari esempi e corsi su excel e VBA.
Provatamente te ne posso indicare alcuni: fammi sapere.

Ciao da Ricky53
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 e accodare files *.txt in un file *.xls

Postdi sandy2066 » 21/05/09 16:59

Grazie Flash
e
Grazie Ricky
cercherò di seguire i vostri suggerimenti!
a presto e buona serata :-)
Sandy
sandy2066
Newbie
 
Post: 6
Iscritto il: 20/05/09 14:22

Re: EXCEL- importare e accodare files *.txt in un file *.xls

Postdi ricky53 » 21/05/09 17:44

Ciao
anche a te.

Per ogni necessità sai dove trovare degli amici pronti ad aiutarti.

Ciao da Ricky53
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


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL- importare e accodare files *.txt in un file *.xls":


Chi c’è in linea

Visitano il forum: raimea e 10 ospiti