Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro importazione di una serie di file TXT

Ultimo Aggiornamento: 13/03/2020 15:49
Post: 31
Registrato il: 05/06/2002
Città: TORRE DEL GRECO
Età: 64
Utente Junior
2010
OFFLINE
13/03/2020 10:02

Ho trovato in rete questa macro,per importare serie di file TXT su di un unico foglio vabbene ma mi crea un problema ossia dopo il primo TXT importato a partire dal secondo mi elimina sempre il primo record lasciando al suo posto una riga vuota è possibile ovviare a ciò grazie come sempre per la vostra disponibilità
allego macro:
Sub read_file()
Dim MyData As String, v As Variant
Dim i As Integer, j As Integer, chunk As Integer
Dim fso As Object, fi As Object, mypath As String
Dim current_row As Long, w As Variant, ri As Long, co As Integer

Set fso = CreateObject("Scripting.FileSystemObject")

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "C:\Users\Enry\Desktop\Nuova cartella"
.Show
mypath = .SelectedItems(1)
End With

ri = Range("A65000").End(xlUp).Row
For Each fi In fso.getfolder(mypath).Files
If LCase(Right(fi.Name, 3)) = "bak" Then
Open fi For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1

i = 0: j = j + 1
For Each v In Split(MyData, vbCrLf)
i = i + 1
If j = 1 Or (j > 1 And i > 1) Then
w = Split(v, " ") '<<< delimitatore di campo è ";"
For co = 1 To UBound(w) + 1
Cells(ri, co) = w(co - 1)
Next
ri = ri + 1
End If
Next

Close #1
End If
Next

MsgBox "Fatto"
End Sub
PS il file txt importato valorizza ovviamente solo la colonna A
Post: 2.572
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
13/03/2020 11:02

ciao
bisognerebbe avere un tuo file di testo e sapere cosa devi riportare in excel.

"Teoricamente" prova a sostituire:

i = 0: j = j + 1

con

i = 0: j = 1

saluti




[Modificato da dodo47 13/03/2020 11:54]
Domenico
Win 10 - Excel 2016
Post: 32
Registrato il: 05/06/2002
Città: TORRE DEL GRECO
Età: 64
Utente Junior
2010
OFFLINE
13/03/2020 15:21

Macro importazione di una serie di file txt
grazie per la risposta ma purtroppo la tua sostituzione che ho portato mi importa correttamente adesso tutti i file ma comunque mi rimane una riga vuota tra un file e l'altro esempio:
1 file TXT
09 006110400152001010635 00
24 015060104042001010616 00
24 005141410082001010617 00
24 005100607022001010617 00
24 005140714132001010624 00
24 005020311052001010625 00
2 file TXT
26 115040900071912311842 37
09 113031203141912311901 00
26 113051210151912311847 37

come puoi vedere mi mette una riga vuota come se dovesse starci non so' una sorte di intestazione campo

Grazie sempre per la disponibilità
Post: 2.573
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
13/03/2020 15:49

La riga vuota la mette perchè probabilmente alla fine di ogni file c'è un'andata a capo (o spazio), basterebbe toglierlo da codice quando leggi il file. Come sei messo con la programmazione?

In alternativa prova ad aggiungere dopo: If LCase(Right(fi.Name, 3)) = "bak" Then

ri = ri - 1
If ri <= 0 Then ri = 1

saluti




[Modificato da dodo47 13/03/2020 17:05]
Domenico
Win 10 - Excel 2016
Vota: 15MediaObject5,0024 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:25. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com