Bentornat!
Quello che hai ricevuto e' uin file in formato "Stampa", e non e' vero che il primo campo cominci sempre con L4. Io ci trovo:
- Codice: Seleziona tutto
L4 590151436 0 E4 Collo: 1
AB 190079559 0 L4 Collo: 1
AG 190025775 0 L4 Collo: 1
AK 190040583 0 L4 Collo: 1
...
L5 590066039 0 L4 Collo: 1
…
L8 190054805 0 L4 Collo: 1
...
WW 590177509 0 L4 Collo: 8
Ora secondo me il mittente non ha nessuna difficolta' a generare e passarti un file in formato CSV, oppure direttamente XLS (i gestionali piu' comuni lo fanno). Perche' sarebbe molto meglio che il problema venga risolto a monte piuttosto che non a valle.
Comunque, con quel formato file probabilmente puoi ottenere I tuoi dati con questa macro:
- Codice: Seleziona tutto
Sub DBImport1()
Dim TArr(0 To 7), RCnt As Long, EOLMark As String, RReady As Boolean
Dim RRec As String, myNext As Long
'
Close #1
'
EOLMark = "Bilancia:"
'Scelta file:
myFile = Application.GetOpenFilename("File di testo,*.txt")
If myFile = "Falso" Then
MsgBox "Nessun File Selezionato, procedura abortita"
Exit Sub
End If
'
Open myFile For Input As #1
Do Until (EOF(1))
RReady = False
RCnt = RCnt + 1
Line Input #1, TArr(RCnt Mod 8)
If Left(TArr(RCnt Mod 8), Len(EOLMark)) = EOLMark Then
RRec = TArr((RCnt - 3) Mod 8) & " " & TArr((RCnt - 2) Mod 8) & " " & TArr((RCnt - 1) Mod 8) & " " _
& TArr(RCnt Mod 8) & " "
RReady = True
End If
If RReady Then
'Compilazione record:
myNext = Cells(Rows.Count, 1).End(xlUp).Row + 1
lfor = "Collo:"
Cells(myNext, 1) = Trim(Left(RRec, InStr(1, RRec, lfor, vbTextCompare) - 1))
lfor = "Data:": lfor2 = "Ora:"
Cells(myNext, 2) = CDate("0" & Trim(Mid(RRec, InStr(1, RRec, lfor, vbTextCompare) + Len(lfor), InStr(1, RRec, lfor2, vbTextCompare) - InStr(1, RRec, lfor, vbTextCompare) - Len(lfor))))
lfor = "Peso:": lfor2 = "Lunghezza:"
Cells(myNext, 3) = CLng("0" & Trim(Mid(RRec, InStr(1, RRec, lfor, vbTextCompare) + Len(lfor), InStr(1, RRec, lfor2, vbTextCompare) - InStr(1, RRec, lfor, vbTextCompare) - Len(lfor))))
lfor = "Lunghezza:": lfor2 = "Larghezza:"
Cells(myNext, 4) = CLng("0" & Trim(Mid(RRec, InStr(1, RRec, lfor, vbTextCompare) + Len(lfor), InStr(1, RRec, lfor2, vbTextCompare) - InStr(1, RRec, lfor, vbTextCompare) - Len(lfor))))
lfor = lfor2: lfor2 = "Altezza:"
Cells(myNext, 5) = CLng("0" & Trim(Mid(RRec, InStr(1, RRec, lfor, vbTextCompare) + Len(lfor), InStr(1, RRec, lfor2, vbTextCompare) - InStr(1, RRec, lfor, vbTextCompare) - Len(lfor))))
lfor = lfor2: lfor2 = "Barcode:"
Cells(myNext, 6) = CLng("0" & Trim(Mid(RRec, InStr(1, RRec, lfor, vbTextCompare) + Len(lfor), InStr(1, RRec, lfor2, vbTextCompare) - InStr(1, RRec, lfor, vbTextCompare) - Len(lfor))))
End If
DoEvents
Loop
Close #1
MsgBox ("Completato...")
End Sub
Mettila in un modulo standard, poi attiva il foglio in cui vuoi creare la tua tabella e avvia la Sub DBImport1: ti verra' chiesto di selezionare il file txt da analizzare e poi l'elenco viene compilato accodandolo a quanto gia' eventualmente presente.
Ti suggerisco di partire da un file con un migliaio di record, in modo da verificare se quanto ottenuto e' idoneo (il file completo richiedera' parecchi minuti per essere elaborato).
Fai sapere…