eccomi di nuovo alle prese con questi dannati file txt...
Stavolta nel mio txt ci sono una serie di comuni ai quali devo assegnare diversi codici.
Ad esempio ai comuni COMUNE1, COMUNE3 e COMUNE5 assegnerò il codice LT001, al COMUNE2 il codice LT002 ecc.
Queste assegnazioni sono presenti nel file excel dov'è presente la macro che deve leggere e modificare il txt.
A questo link trovate sia un esempio del txt da elaborare che l'excel con la macro, per vederne l'attuale funzionamento pratico:
http://www.mondometalwebzine.com/Prova.rar
Sto utilizzando questo codice:
- Codice: Seleziona tutto
Sub GCLI_Assegna_Letturisti()
Dim V As Variant
Dim mycell As String
Dim mybook As String
Worksheets("GU1").Activate
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen = False Then
Sheets("GU1").Cells(1, 1) = ""
Exit Sub
Else
Sheets("GU1").Cells(1, 1) = fileToOpen
End If
NomeFile = Right(fileToOpen, Len(fileToOpen) - InStrRev(fileToOpen, "\"))
Sheets("GU1").Cells(2, 1) = NomeFile
mycell = fileToOpen
myfile = ThisWorkbook.Sheets("GU1").[A5] & "Letturisti_" & ThisWorkbook.Sheets("GU1").[A2]
Open mycell For Input As #1
Open myfile For Output As #2
For i = 2 To ThisWorkbook.Sheets("GU2").[G2]
comune = ThisWorkbook.Sheets("GU2").Cells(i, 9)
letturista = ThisWorkbook.Sheets("GU2").Cells(i, 10)
Do While Not EOF(1)
Line Input #1, V
If Mid$(V, 44, 30) = comune Then
va = Mid$(V, 1, 182)
vb = letturista
vc = Mid$(V, 188, 81)
modifica = va & vb & vc
Print #2, modifica
Else
Print #2, V
End If
Loop
Next i
Close #1
Close #2
Worksheets("GU1").Range("A2").Clear
Worksheets("GU1").Range("A1").Clear
MsgBox ("ELABORAZIONE TERMINATA")
End Sub
Sicuramente sto usando male il ciclo for (o magari nemmeno quello dovrei usare, ma qualcos'altro), perché attualmente la macro mi sostituisce solo il primo valore assunto dalla i, mentre non i restanti.
Come dovrei modificare il codice per effettuare tutte le sostituzioni presenti nell'excel?
Grazie mille per le proposte e scusate la mia incapacità