Allora, ho capito che nel foglio Excel tu hai 7 campi (erano 8 nelle prime specifiche, ma mi pare che hai accorpato <PROVIDER> e <PARCEL_ID> in una unica cella e un unico campo di 13 crt), a partire da riga 1 verso il basso (quindi A1:Gxxx).
Se e' cosi', questa macro potra' aiutarti a creare il file txt col formato che aspetti:
- Codice: Seleziona tutto
Option Base 1
Sub Buni75()
Dim myForm, myType, I As Long, J As Long, myBlk As String
'Lunghezza campi:
myForm = Array(13, 8, 40, 33, 8, 3, 21) '
'TIPO: 0=stringa, left;1=data, left; 2=Numero 3 dec, right
myType = Array(0, 1, 0, 0, 1, 0, 2)
Close #1
'>>> nella prossima riga usare il corretto Percorso /Nome file:
Open "C:\Users\USER\Downloads\byBUNI75_AAAA-MM-GG.Ctr_1234_B60921.txt" For Output As #1
For I = 1 To Cells(Rows.Count, 1).End(xlUp).Row
myBlk = ""
For J = 1 To UBound(myForm)
If myType(J) = 0 Then
myBlk = myBlk & Left(Cells(I, J), myForm(J)) & String(myForm(J) - Len(Left(Cells(I, J), myForm(J))), " ")
ElseIf myType(J) = 1 Then
myBlk = myBlk & Left(Cells(I, J), myForm(J)) & String(myForm(J) - Len(Left(Cells(I, J), myForm(J))), " ")
ElseIf myType(J) = 2 Then
myBlk = myBlk & String(myForm(J) - Len(Format(Cells(I, J), "0.000")), " ") & Format(Cells(I, J), "0.000")
End If
Next J
Debug.Print myBlk
Print #1, myBlk
Next I
Close #1
End Sub
Mettila in un nuovo Modulo del vba, in modo che l'istruzione Option Base 1 sia in testa a tutto.
La riga marcata >>> va personalizzata col tuo Path/nomefile.
Come capirai, in myForm ho inserito la larghezza che devono avere i singoli campi, e in myType il tipo di contenuto dei campi; io ho capito solo cammin facendo che anche quella che pensavo dovessere essere una data (tipo 2, nel mio standard) in realta' e' una stringa, ma mi sono limitato a inserire nel blocco
If myType la stessa istruzione sia per il tipo 0 (stringa) che il tipo 2.
Prova e fai sapere...
Ciao