Hallo,
so ich hoffe jetzt das dass mein letzter Thread ist.
Ich möchte eine CSV Fatei auslesen, die zeilenanzahl ist variabel und kann bis zu 120000 zeilen gehen. Und dies in ein Excelsheet Tabelle 1 schreiben.
Ich habe das ganze bis 50000 Zeilen getestet und es funktioniert.
So jetzt habe ich eine csv Datei mit 120000 Zeilen erstellt und nach 66435 Zeilen bekomme ich jetzt immer die Fehlermeldung "Index außerhalb des gültigen Bereichs" Laufzeitfehler 9.
Meine Vermutung ist das mit der Open Anweisung ein E/A Speicherbereich zugewiesen wird. Und dieser jetzt zu klein ist.
Kann meine Vermutung stimmen?
Hätte jemand einen Vorschlag
Sub cmdStart_Click()
Dim strPfad As String
Dim strZS As String
Dim lngZeile As Long
Dim strDatei As String
Dim dblAnzahlZ As Double
Dim wkbcsv As Workbook
'****************************************************************
'Dialog Öffnen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Wählen Sie die gewünschte Rohdaten Datei aus"
Call .Filters.Add("CSV Dateien", "*.csv")
If .Show = -1 Then
strDatei = .SelectedItems(1)
If Right(strDatei, 1) <> "\" Then strDatei = strDatei
Else
strDatei = ""
End If
End With
If strDatei = "" Then
MsgBox "Sie haben keine Datei ausgewählt", vbOKOnly
Exit Sub
End If
lngZeile = 5
If strDatei <> "" Then
Workbooks.Open strDatei
End If
Open strDatei For Input As #1
With Tabelle1
.Range("A2:I200000").Rows.ClearContents
Line Input #1, strZS
.Range("A3").Value = Split(strZS, ";")(0)
.Range("B3").Value = Split(strZS, ";")(1)
.Range("C3").Value = Split(strZS, ";")(2)
.Range("D3").Value = Split(strZS, ";")(3)
.Range("E3").Value = Split(strZS, ";")(4)
.Range("F3").Value = Split(strZS, ";")(5)
.Range("G3").Value = Split(strZS, ";")(6)
.Range("H3").Value = Split(strZS, ";")(7)
.Range("I3").Value = Split(strZS, ";")(8)
Do Until EOF(1)
Line Input #1, strZS
.Range("A" & lngZeile).Value = Split(strZS, ";")(0)
.Range("B" & lngZeile).Value = Split(strZS, ";")(1)
.Range("C" & lngZeile).Value = Split(strZS, ";")(2)
.Range("D" & lngZeile).Value = Split(strZS, ";")(3)
.Range("E" & lngZeile).Value = Split(strZS, ";")(4)
.Range("F" & lngZeile).Value = Split(strZS, ";")(5)
.Range("G" & lngZeile).Value = Split(strZS, ";")(6)
.Range("H" & lngZeile).Value = Split(strZS, ";")(7)
.Range("I" & lngZeile).Value = Split(strZS, ";")(8)
lngZeile = lngZeile + 1
Loop
Close #1
End With
For Each wkbcsv In Workbooks
Application.DisplayAlerts = False
If wkbcsv.Name <> ThisWorkbook.Name Then
wkbcsv.Close savechanges:=False
End If
Next wkbcsv
Me.lblAnzahlZ = _
ActiveSheet.UsedRange.Rows.Count & " Zeilen wurden aus der Rohdatendatei importiert"
Me.lblDateiname = strDatei & "wurde importiert"
End Sub
|