Condividi:        

EXCEL importa file txt

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 file txt

Postdi Anto1 » 07/03/10 22:00

Ciao sono Antonella,
volevo innanzitutto fare i complimenti per il sito...utilissimo per una alle prime armi come me!!!

avrei bisogno di aiuto per la costruzione di una macro che consentisse l'importazione di dati contenuti in un file txt in fogli excel.

il problema è il seguente:
il file txt è costituito da circa un milione di righe ed ogni riga contiene una serie di dati intervallati dallo spazio

esempio:

dato1 dato2 dato3 dato4 dato5........
come quando fuori piove......
..............................
............................
e così via

avrei bisogno di importare questi dati in fogli excel in modo che ad ogni cella corrisponda un dato, rispettando le righe (i dati della riga 1 del file txt devono essere importati nella riga 1 foglio excel):

esempio

cell(1,1)= dato1 cell(1,2)= dato2...........
cell(2,1)=come cell(2,2)=quando..........
..................................

il secondo problema è rappresentato dal numero di righe:
sono costretta ad utilizzare l'office 2003 ed il numero di righe è limitato, quindi la macro dovrebbe una volta terminata l'importazione dei dati nel primo foglio, continuare l'importazione nei fogli successivi fino alla fine

spero che mi possiate aiutare, anche perchè sono all'inizi con il Vb

ciao,
Anto
Anto1
Newbie
 
Post: 2
Iscritto il: 07/03/10 21:27

Sponsor
 

Re: EXCEL importa file txt

Postdi Flash30005 » 08/03/10 00:17

Ciao Anto1 e benvenuta

Prova questa macro

Codice: Seleziona tutto
Public FT As Integer
Sub CreaFoglioDati()
Perc = "C:\Antonella\"  '<<< direttorio dove hai il file .Txt
FileT = "Archivio.Txt"  ' Nome del file Txt
DivisF = 100            ' numero di righe che vuoi nel foglio (per 1.000.000 è opportuno inserire 60000 invece di 100)

oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
    Open Perc & FileT For Input As #1
    Do Until EOF(1)
        Line Input #1, Riga
        ContaR = ContaR + 1
    Loop
    Close #1
FogliEs = Worksheets.Count
CreaF = Int(ContaR / DivisF) + 1
If FogliEs < CreaF Then
    For i = FogliEs + 1 To CreaF
        NomeF = "Foglio" & i
        Sheets.Add After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = NomeF
        Range("A1").Select
        Next i
    Worksheets("Foglio1").Select
End If
cf = 1
FT = 1
Cfi = 1
Rtx = 0
TR = 0
    Open Perc & FileT For Input As #2
    Do Until EOF(2)
        Line Input #2, Riga
        TR = TR + 1
            Application.StatusBar = "Importazione Dati " & Int(TR / ContaR * 100) & " %"
        If Cfi > DivisF Then
        Call Distribuisci
        FT = FT + 1
        Cfi = Worksheets("Foglio" & FT).Range("A" & Rows.Count).End(xlUp).Row
        cf = 1
        End If
        If cf = 1 Then
        Stringa1 = Riga
        Worksheets("Foglio" & FT).Range("A" & cf).Value = Stringa1
        Else
        Cfi = cf
        stringa2 = Riga
        Worksheets("Foglio" & FT).Range("A" & cf).Value = stringa2
        End If
       cf = Worksheets("Foglio" & FT).Range("A" & Rows.Count).End(xlUp).Row + 1
    Loop
    Close #2
    Call Distribuisci
    Worksheets("Foglio1").Select
    Range("A1").Select
Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
End Sub

Sub Distribuisci()
    Worksheets("Foglio" & FT).Select
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), 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, 1), _
        Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
    Range("A1").Select
End Sub


Come vedi il percorso iniziale è C:\Antonella\ che potrai cambiare
il nome del file è Archivio.txt
Il numero di righe che vuoi avere su un foglio è impostato a 100 ma tu metterai per il tuo file almeno 60000 (sessantamila) in maniera tale che con 17 fogli avrai completato l'importazione di tutte le righe del file.txt

Allego anche il file in excel con la macro già impostata e un file.txt che ho utilizzato per il test
Dovrai posizionare il tutto in C:\Antonella
aprire il file DbAntonella.xls e avviare la macro "CreaFoglioDati"

file Test da scaricare

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL importa file txt

Postdi Anto1 » 08/03/10 22:40

grazie tante!!!!!!

baci
Anto1
Newbie
 
Post: 2
Iscritto il: 07/03/10 21:27

Re: EXCEL importa file txt

Postdi Flash30005 » 09/03/10 00:31

Scusami, sostituisci questo file con quello precedente
sul quel file c'è uno START di troppo che non funzionava a dovere

Ti spiego
1) se il foglio1 è vuoto sulla cella A1 avrai una dicitura "START" cliccandoci sopra due volte (veloci) si attiva la macro di importazione del file testo e metterà la testata (sostituendo la precedente dicitura START)
2) Con questo file avrai una testata su ogni foglio (sul precedente non c'era)
3) Eliminando tutti i fogli tranne che Foglio1 e ripulendo quest'ultimo, al primo riavvio riapparirà START che ti permetterà di riattivare la macro di importazione, in pratica il programma è di nuovo pronto per una futura applicazione

Ancora scusa per questo inconveniente
:oops: (non mi sono fatto rosso per il mio errore ma... per l'affetto che hai dimostrato) :lol:

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL importa file txt":


Chi c’è in linea

Visitano il forum: Nessuno e 85 ospiti