V procedure Sub ProcessCSV mas deklarovane promenne:
Kód: Vybrat vše
Dim tTicket As String, tMFE As String, tPaL1 As String, tMAE As String
a na promenne typu string uplatnujes funkci CLng nebo CDbl:
Kód: Vybrat vše
Do While Not EOF(1)
Input #1, tTicket, tMFE, tPaL1, tMAE
If tTicket <> "Ticket #" Then
numPositions = numPositions + 1
ReDim Preserve Positions(numPositions)
With Positions(numPositions)
.Ticket = CLng(tTicket)
tMFE = Replace(tMFE, ".", ",", 1)
.MFE = CDbl(tMFE)
tPaL1 = Replace(tPaL1, ".", ",", 1)
.PaL1 = CDbl(tPaL1)
tMAE = Replace(tMAE, ".", ",", 1)
.MAE = CDbl(tMAE)
End With
End With
End If
End
Loop
.
Preved promenne na hodnotu pouzitim fce Val: .MFE = CDbl(Val(tMFE)). Ve vyse uvedene casti kodu je prikaz End, ktery proceduru ukonci, odstran. Po odstraneni vyse uvedenych chyb v teto procedure dochazi ke cteni za koncem souboru: pouzita fce Input #1 nacita do kazde z promennych tTicket, tMFE, tPaL1, tMAE po jednom celem radku ze souboru, takze pri poctu radku odlisnych od nasobku 4, dojde k teto chybe, data navic nejsou radne nactena. Dal jsem uz proceduru nezkoumal.
Odkud jsi ty procedury opsal?
Ja bych pouzil trochu jiny postup:
Prikazem Line Input nacetl radky do bunek listu ve sloupci A a pak pouzil fci listu TextDoSloupcu (kde v pripade potreby muzes zadat i typ dat a oddelovac desetinnych mist), viz ukazka kodu (v ukazce navic bylo potreba do jednoho radku vysledku sloucit nekolik radku souboru csv a identifikovat jeho pocatek, na konci souboru byl radek Koniec):
Kód: Vybrat vše
Open SPathFile For Input As #1
i = 0
If Not EOF(1) Then Line Input #1, Str
Do While Not EOF(1)
Line Input #1, TmpStr
' If DOK or Koniec. in new line then end of record
If (InStr(TmpStr, "DOK") > 0 Or TmpStr = "Koniec.") Then
' insert to sheet
TargetCll.Offset(i, 0).Value = Str
' and delimit TextToColumns method
TargetCll.Offset(i, 0).TextToColumns Destination:=TargetCll.Offset(i, 0), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False
i = i + 1
Str = TmpStr
Else
Str = Str & ";" & TmpStr
End If
Loop
Close #1
PS.: Nekde jsem se uz s podobnym zpusobem nacitani souboru csv setkal, nebyls to ty?