Überlauf
ISI
ich habe folgende Function, die mir komischerweise auf einmal (hat mit anderen csv-Dateien schon ettliche Male Problemlos funktioniert) einen Fehler : "Überlauf ausspuckt", und zwar bei
For I = 0 To UBound(Tmp).
Es kann ja eigentlich keine Endlosschleife sein, oder?
Gruß,
Ilan
Function ImportCSV(sDateix As String, sPfadx As String, intCx As Integer)
Dim Arr
Dim Datei
Dim FSO
Dim L As Long
Dim isRWE As Boolean
Dim xx As Long
Dim vntLeistung As Variant
Dim Tmp As Variant
Dim vnt_Ausgabe() As String '---> wichtig, dass es nicht als Variant gemacht wird, da es sonst _
_
_
_
probleme mit den numerischen
' Werten und der Trennzeichensetzung geben kann
Dim I As Integer
Dim II As Integer
Dim Wbk As Workbook
Set FSO = CreateObject("Scripting.FilesystemObject")
Set Datei = FSO.OpentextFile(sPfadx & sDateix)
Arr = Split(Datei.readall, vbCrLf) 'Nach Datensätzen splitten wobei vbCrLf nichts anderes _
bedeutet,
'als dass der Cursor an den Anfang einer neuen Zeile gesetzt _
_
_
_
wird
Datei.Close
ReDim vnt_Ausgabe(UBound(Arr), 20) '20 Spalten müssten genügen
For L = 0 To UBound(Arr)
Tmp = Split(Arr(L), ";") 'Jeden Datensatz nach Werten splitten und in den tempöraren Array _
_
_
_
packen
If Not UBound(Tmp) = -1 Then
If Tmp(LBound(Tmp)) = "STRASSE" Then 'Falls es sich um eine RWE Datei handelt
isRWE = True
End If
End If
For I = 0 To UBound(Tmp)
'6. Spalte numerisch, deswegen per CDbl umwandeln
If (I = 5) And (IsNumeric(Tmp(I))) Then
Tmp(I) = CStr(CDbl(Tmp(I)))
If isRWE = True Then 'Falls RWE vom Datum nur die letzten vier Zeichen nehmen
Tmp(I) = Right(Tmp(I), 4)
End If
End If
vnt_Ausgabe(L, I) = Tmp(I) 'jeden Wert (temporären Array) in das Array vnt_Ausgabe _
umschaufeln
Next
Next
Set Wbk = Workbooks.Add
Application.DisplayAlerts = False
Range("A1").Resize(UBound(vnt_Ausgabe) + 1, UBound(vnt_Ausgabe, 2)) = vnt_Ausgabe 'Alles ab A1 _
_
_
_
reinschreiben
Wbk.SaveAs Filename:=sPfadx & Left(sDateix, Len(sDateix) - 3) & "xls"
Wbk.Close
Application.DisplayAlerts = True
ImportCSV = False
End Function