View Full Version : [Macro excel] Problemi con gli a capo durante la lettura di un file
frizzo28
27-04-2009, 09:53
Ciao a tutti ho un problema con una macro excel in cui devo leggere un file .csv ( in pratica un file di testo separato da virgole).
In pratica nei file forniti in input al programma alcuni hanno solo il LF(ASCII 10) e altri hanno sia CR(ASCII 13) che LF(ASCII 10) alla fine della riga...
Il mio problema e' quindi come leggere correttamente riga per riga questo file con una macro VB in excel?
grazie
ciao
Ad esempio cosė... :
'ASCII 10 = costante vbLf
'ASCII 13 = costante vbCr
Dim strInput As String
strInput = vbLf & "Stringa Pulita" & vbLf & vbCr
MsgBox strInput
Dim strOutput As String
strOutput = strInput
Dim arrayCharsNA() As Variant
arrayCharsNA = Array(vbLf, vbCr)
Dim i As Integer
For i = 0 To UBound(arrayCharsNA)
strOutput = Replace(strOutput, arrayCharsNA(i), "")
Next i
MsgBox strOutput
arrayCharsNA contiene tutti i caratteri indesiderati da eliminare.
Meglio se parametrizzata in una Function... ;)
frizzo28
27-04-2009, 13:51
Ad esempio cosė... :
'ASCII 10 = costante vbLf
'ASCII 13 = costante vbCr
Dim strInput As String
strInput = vbLf & "Stringa Pulita" & vbLf & vbCr
MsgBox strInput
Dim strOutput As String
strOutput = strInput
Dim arrayCharsNA() As Variant
arrayCharsNA = Array(vbLf, vbCr)
Dim i As Integer
For i = 0 To UBound(arrayCharsNA)
strOutput = Replace(strOutput, arrayCharsNA(i), "")
Next i
MsgBox strOutput
arrayCharsNA contiene tutti i caratteri indesiderati da eliminare.
Meglio se parametrizzata in una Function... ;)
Ti ringrazio per l'aiuto alla fine ho risolto cosi'...:
Comunque mi hai dato una buona idea su come risolvere... alla fine ho risolto cosi':
appo = ""
'Leggo tutto il file
Open ThisWorkbook.Path & "\" & cFilename For Input As #1
Do
Line Input #1, linea
appo = appo & linea & "#END#"
Loop Until EOF(1) = True
Close (1)
'sostituisco tutti i CR che potrebbero dare problemi
appo = Replace(appo, vbCr, "")
'sostituisco i LF con #END# per conoscere la fine dalla riga
appo = Replace(appo, vbLf, "#END#")
'In linee avro' il file linea per linea
Linee() = Split(appo, "#END#")
Lung = UBound(Linee)
conta = Lung
'Qui conto gli a capo alla fine del file per farli ignorare al programma le linee vuote alla fine
Do While conta > 0
If Linee(conta) = "" Then
Lung = Lung - 1
End If
conta = conta - 1
Loop
grazie
ciao;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.