Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Importa dati da file di testo

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] Importa dati da file di testo

Postdi giulio_radar » 29/08/12 14:02

Salve,

mi sono iscritto da poco e vorrei proporvi questo piccolo dubbio riguardo l'importazione di file .txt in excel.

Il mio scopo sarebbe quello di:
1) assegnare tramite un valore di input (valore di una cella del primo foglio) che rappresenta il numero di documenti da importare
2) fare in modo che excel importi i file .txt con un ciclo in cui il nome del file da importare sia contenuto in una stringa
3) formattare il file .txt in modo che excel separi i dati secondo certi criteri (spazi, virgole, ecc.)

Ho scritto il codice il quale è apparentemente corretto. Infatti la macro non si pianta nè da errori e le stringhe assumono via via i valori corretti. Tuttavia la cosa sorprendente è che pur girando, la macro non importa un fico secco, come se i file a cui punta fossero vuoti, cosa che non è.

Vi allego il codice, qualcuno sa aiutarmi a capire dove sto sbagliando? Grazie infinite.

Codice: Seleziona tutto
Sub CEM()

Dim i, n As Integer

Sheets("Dati_CEM").Select
'----seleziono la cella contenente la quantità di files .txt da processare
i = Cells(5, 3).Value

'----creo un ciclo FOR per creare tanti fogli quanti sono i file .txt da importare
'----nello stesso ciclo importo il file .txt

    For n = 1 To i

            '----aggiungo un nuovo foglio su cui importerò i dati
            Sheets.Add After:=Sheets(Sheets.Count)
            Sheets("Foglio" & n).Select
            Sheets("Foglio" & n).Name = n
               
            Dim percorso As String
            Dim nome_file As String
            Dim ENNE As String
           

            ENNE = n

            'per semplicità i fogli sono tutti numerati nella cartella d'origine come: "cifra.txt"         
            'inserisco le stringhe che contengono il percorso ed il nome file che cambierà essendo legato all'integer n

            percorso = "\\Dati\dati\_COMUNE\CEM\MACRO\DATA\"
            nome_file = percorso & n & ".txt"
           
            'importo i files

            With ActiveSheet.QueryTables.Add(Connection:= _
                "TEXT;" & nome_file, Destination:=Range _
                ("$A$1"))
                    .Name = ENNE
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .TextFilePromptOnRefresh = False
                    .TextFilePlatform = 932
                    .TextFileStartRow = 1
                    .TextFileParseType = xlDelimited
                    .TextFileTextQualifier = xlTextQualifierDoubleQuote
                    .TextFileConsecutiveDelimiter = True
                    .TextFileTabDelimiter = True
                    .TextFileSemicolonDelimiter = False
                    .TextFileCommaDelimiter = False
                    .TextFileSpaceDelimiter = True
                    .TextFileColumnDataTypes = Array(1, 4, 1, 1, 1, 1, 1, 1, 1)
                    .TextFileTrailingMinusNumbers = True
               
               
                End With
           
    Next

End Sub



Questo è quanto.....
Attendo!
Grazie
Giulio
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Sponsor
 

Re: [Excel] Importa dati da file di testo

Postdi Anthony47 » 29/08/12 14:47

Ciao giulio_radar, benvenuto nel forum.
Dovresti anche allegare un piccolo file txt a cui applicare la macro, spiegando inoltre dovrebbero essere i dati importati (bastano un paio di righe in testa al file txt, in formato di screenshot).
Per come allegare un file e uno screenshot guarda qui: viewtopic.php?f=26&t=80395

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

Re: [Excel] Importa dati da file di testo

Postdi giulio_radar » 30/08/12 09:59

Ciao Anthony47,

grazie per la tua pronta risposta e grazie anche per aver spostato la conversazione su un nuovo tread.
Dunque, per iniziare un file "dummy" come quelli che dovrei importare (ed il suo link come richiestomi):

https://rapidshare.com/files/3206271/1.txt

I dati contenuti sono delle misure di campi elettromagnetici. Sostanzialmente una volta importati mi dovrei arrangiare.
Quello che mi sorge spontaneo chiedere è se il contenuto di un file può in qualche modo influenzare la buona riuscita di una macro.

Se servono altri dettagli sul codice che ho postato, basta chiedere. Spero che i commenti inseriti possano comunque bastare.
Spero di trovare una soluzione al problema, non capisco perchè il codice non funziona.

Grazie in anticipo.
Giulio
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: [Excel] Importa dati da file di testo

Postdi Flash30005 » 30/08/12 10:34

Ciao Giulio_Radar e benvenuto nel Forum anche da parte mia

Nella query mancava una riga ( .Refresh BackgroundQuery:=False)
e nell'assegnazione nome foglio ho fatto una modifica perché la macro andava in errore
Ora dovrebbe funzionare
Codice: Seleziona tutto
Sub CEM()

Dim i, n As Integer

Sheets("Dati_CEM").Select
'----seleziono la cella contenente la quantità di files .txt da processare
i = Cells(5, 3).Value

'----creo un ciclo FOR per creare tanti fogli quanti sono i file .txt da importare
'----nello stesso ciclo importo il file .txt

    For n = 1 To i

            '----aggiungo un nuovo foglio su cui importerò i dati
            'Sheets.Add After:=Sheets(Sheets.Count)
            ActiveWorkbook.Worksheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = n
            'Sheets("Foglio" & n).Select
            'Sheets("Foglio" & n).Name = n
               
            Dim percorso As String
            Dim nome_file As String
            Dim ENNE As String
           

            ENNE = n

            'per semplicità i fogli sono tutti numerati nella cartella d'origine come: "cifra.txt"
            'inserisco le stringhe che contengono il percorso ed il nome file che cambierà essendo legato all'integer n
            '<<<< percorso = ThisWorkbook.Path & "\" '<<<< percorso test
            percorso = "\\Dati\dati\_COMUNE\CEM\MACRO\DATA\"
            nome_file = percorso & n & ".txt"
           
            'importo i files

            With ActiveSheet.QueryTables.Add(Connection:= _
                "TEXT;" & nome_file, Destination:=Range _
                ("$A$1"))
                    .Name = ENNE
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .TextFilePromptOnRefresh = False
                    .TextFilePlatform = 932
                    .TextFileStartRow = 1
                    .TextFileParseType = xlDelimited
                    .TextFileTextQualifier = xlTextQualifierDoubleQuote
                    .TextFileConsecutiveDelimiter = True
                    .TextFileTabDelimiter = True
                    .TextFileSemicolonDelimiter = False
                    .TextFileCommaDelimiter = False
                    .TextFileSpaceDelimiter = True
                    .TextFileColumnDataTypes = Array(1, 4, 1, 1, 1, 1, 1, 1, 1)
                    .TextFileTrailingMinusNumbers = True
                    .Refresh BackgroundQuery:=False
               
                End With
    Next
End Sub


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] Importa dati da file di testo

Postdi giulio_radar » 30/08/12 10:38

Grazie, provo subito!!
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: [Excel] Importa dati da file di testo

Postdi giulio_radar » 30/08/12 10:57

Avevi ragione!
Ora la macro funziona. Il problema quindi era sull'istruzione di rinomina dei fogli o sulla riga mancante?
Grazie infinite.
Giulio
Avatar utente
giulio_radar
Utente Junior
 
Post: 15
Iscritto il: 29/08/12 13:48

Re: [Excel] Importa dati da file di testo

Postdi Flash30005 » 30/08/12 12:47

Riga mancante!

Il rinomina fogli non capisco come faceva a funzionare, a me dava errore e quindi non processava nemmeno la QueryTable ma andava in debug.

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-


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Importa dati da file di testo":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti