Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler 62: Einlesen hinter Dateiende

Laufzeitfehler 62: Einlesen hinter Dateiende
04.07.2005 19:17:16
Gregor
Hallo!
Habe folgendes Problem:
Folgender Code, der bisher funktioniert hat, gibt neuerdings folgende Fehlermeldung von sich:
Laufzeitfehler 62: Einlesen hinter Dateiende
Ehrlich gesagt, verstehe ich vom Code gar nicht's (Korrektur Text einer CSV-Datei). Er funktionierte nur.
Kann mir jemand helfen? Vielen Dank
Gregor

Sub Read_Extern_File_and_Replace_Signs()
' Trennungszeichen Strichpunkt durch Komma ersetzen
'(C) Ramses
Dim i As Long, n As Integer
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim TxtLines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim TextArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\1.csv"
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
TxtLines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
TxtLines = TxtLines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim TextArr(TxtLines)
'Einlesen der Dateien in das Array
For i = 1 To TxtLines
'Zeile einlesen
Line Input #1, TextArr(i)
'temporär übergeben
tempStr = TextArr(i)
'Schleife um Semikola im String zu suchen
For n = 1 To Len(tempStr)
'Wenn gefunden wird das Zeichen ersetzt
If Mid(tempStr, n, 1) = ";" Then
tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, ",")
End If
'§ Anführungszeichen umwandeln (wenn vorher, dann doppelt!)
If Mid(tempStr, n, 1) = "§" Then
tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, """")
End If
Next n
'Der korrigierte String wird wieder in das array zurückgeschrieben
TextArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To TxtLines
'Array an die jeweilige Zeile zurückschreiben
Print #1, TextArr(i)
Next i
'Schliessen
Close #1
'Alle Semikola ersetzt :-))
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 62: Einlesen hinter Dateiende
04.07.2005 19:45:45
MichaV
Hallo
erstmal keine Ahnung, warum das nicht (mehr) funzt.
Versuch das mal, sollte das gleiche Ergebnis bei rauskommen.

Option Explicit
Sub Read_Extern_File_and_Replace_Signs()
Dim Inhalt As String
Dim Zeilen() As String
Dim ReadFile As String
Dim i As Integer
Dim d As Integer
ReadFile = "D:\Micha\Excel\vers.txt" 'anpassen
d = FreeFile
Open ReadFile For Binary As #d
Inhalt = Space(LOF(1))
Get #d, , Inhalt
Close #d
Zeilen = Split(Inhalt, vbCrLf)
For i = LBound(Zeilen) To UBound(Zeilen)
' Semikola durch Komma ersetzen
Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), ";", ",")
'§ durch "" ersetzen
Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), "§", """")
Next i
Open ReadFile For Output As #d
Print #d, Join(Zeilen, vbCrLf)
Close #d
End Sub

Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Laufzeitfehler 62: Einlesen hinter Dateiende
04.07.2005 20:56:55
Gregor
Das war die Lösung!
Micha, ich verneige mich vor dir und sage: VIELEN Dank!!
Grüsse
Gregor
AW: Laufzeitfehler 62: Einlesen hinter Dateiende
04.07.2005 21:24:56
MichaV
Hi Gregor,
lass mal gut sein, Ramses' Code ist ja auch nicht falsch, er lief ja bei Dir. Die Frage ist natürlich, warum auf einmal nicht mehr... Naja, egal.
Danke für die Rückmeldung!
Gruß Micha
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 62 in Excel beheben: Einlesen hinter Dateiende


Schritt-für-Schritt-Anleitung

Wenn du mit dem Laufzeitfehler 62 "Einlesen hinter Dateiende" konfrontiert bist, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen, um das Problem zu beheben:

  1. Überprüfe den Dateipfad: Stelle sicher, dass der Pfad der Datei korrekt angegeben ist. Beispielsweise:

    ReadFile = "C:\1.csv"
  2. Öffne die Datei im richtigen Modus: Achte darauf, die Datei im richtigen Modus zu öffnen. Nutze For Input für das Einlesen:

    Open ReadFile For Input As #1
  3. Benutze die EOF-Funktion: Stelle sicher, dass deine Schleife korrekt auf das Ende der Datei prüft:

    Do While Not EOF(1)
  4. Fehlerhafte Zeilen behandeln: Implementiere eine Fehlerbehandlung, um die Zeilen, die Probleme verursachen, zu identifizieren.

  5. Speichere die Änderungen: Nach dem Einlesen der Daten und der Ersetzung der Zeichen, schließe die Datei richtig:

    Close #1

Häufige Fehler und Lösungen

Hier sind einige häufige Probleme, die zu einem Laufzeitfehler 62 führen können, und deren Lösungen:

  • Falscher Dateipfad: Überprüfe, ob der angegebene Pfad zur Datei korrekt ist. Fehler im Pfad führen oft dazu, dass die Datei nicht gefunden wird.

  • Leere CSV-Datei: Stelle sicher, dass die CSV-Datei nicht leer ist. Eine leere Datei kann zu einem Laufzeitfehler führen, wenn du versuchst, Daten daraus einzulesen.

  • Datei im falschen Format: Vergewissere dich, dass die Datei im richtigen Format vorliegt. Manchmal können auch unsichtbare Zeichen in der Datei zu Problemen führen.


Alternative Methoden

Falls der ursprüngliche Code nicht funktioniert, kannst du alternative Methoden ausprobieren. Hier ist eine andere Herangehensweise, die den Inhalt einer Datei in ein Array einliest:

Option Explicit
Sub Read_Extern_File_and_Replace_Signs()
    Dim Inhalt As String
    Dim Zeilen() As String
    Dim ReadFile As String
    Dim i As Integer
    Dim d As Integer

    ReadFile = "D:\Micha\Excel\vers.txt" ' Bitte anpassen
    d = FreeFile
    Open ReadFile For Binary As #d
    Inhalt = Space(LOF(1))
    Get #d, , Inhalt
    Close #d

    Zeilen = Split(Inhalt, vbCrLf)
    For i = LBound(Zeilen) To UBound(Zeilen)
        Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), ";", ",")
        Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), "§", """")
    Next i

    Open ReadFile For Output As #d
    Print #d, Join(Zeilen, vbCrLf)
    Close #d
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Laufzeitfehler 62 in Excel VBA beheben kannst:

  • Beispiel 1: Ersetzen von Semikola durch Kommas in einer CSV-Datei:

    ' Semikola durch Komma ersetzen
    Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), ";", ",")
  • Beispiel 2: Umwandlung von Anführungszeichen:

    ' § durch "" ersetzen
    Zeilen(i) = Application.WorksheetFunction.Substitute(Zeilen(i), "§", """")

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was hilft, Fehler zu vermeiden.

  • Debugging: Nutze Breakpoints und die Debug.Print-Anweisung, um den Inhalt von Variablen während der Ausführung zu überwachen.

  • Dateiformat prüfen: Stelle sicher, dass die Datei, die du einliest, im richtigen Format vorliegt und keine unerwarteten Zeichencodierungen enthält.


FAQ: Häufige Fragen

1. Warum bekomme ich den Laufzeitfehler 62?
Der Laufzeitfehler 62 tritt auf, wenn das Ende einer Datei erreicht wird, aber der Code weiterhin versucht, Daten einzulesen. Dies kann durch einen falschen Dateipfad oder leere Dateien verursacht werden.

2. Wie kann ich sicherstellen, dass der Code funktioniert?
Überprüfe zunächst den Dateipfad und das Format der Datei. Achte darauf, dass die CSV-Datei nicht leer ist und dass alle Variablen korrekt deklariert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige