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

Laufzeitfehler 62 Textdatei

Forumthread: Laufzeitfehler 62 Textdatei

Laufzeitfehler 62 Textdatei
27.07.2019 19:23:51
sigi
Hallo,
Die Daten aus einer Excel-Tabelle in eine Textdatei funktioniert.
Jedoch beim auslesen kommt der Laufzeitfehler 62
Was stimmt hier nicht?
Danke!
Gruß
Sigi
Option Explicit
Public sFile As String, sDatei As String
Public iRow As Integer, iCol As Integer, iFile As Integer
Sub txt_erstellen()
Dim sTxt As String
sFile = ThisWorkbook.Path & "\Test\" & "Muster.txt"
iFile = FreeFile
Open sFile For Output As iFile
For iRow = 1 To ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row
For iCol = 9 To 16
sTxt = sTxt & ActiveSheet.Cells(iRow, iCol).Value & ";"
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1)
Print #iFile, sTxt
sTxt = ""
Next iRow
Close iFile
End Sub

Sub txt_oeffnen()
Dim sI As String, sJ As String, sK As String, sL As String, sM As String
Dim sN As String, sO As String, sP As String
sDatei = "Muster.txt"
sFile = ThisWorkbook.Path & "\Test\" & sDatei
If Dir(sFile) = "" Then
MsgBox "Die Datei wurde nicht gefunden!"
Exit Sub
End If
iFile = FreeFile
Open sFile For Input As iFile
Do Until EOF(iFile)
iRow = iRow + 1
Input #iFile, sI, sJ, sK, sL, sM, sN, sO, sP
ActiveSheet.Cells(iRow, 9).Value = sI
ActiveSheet.Cells(iRow, 10).Value = sJ
ActiveSheet.Cells(iRow, 11).Value = sK
ActiveSheet.Cells(iRow, 12).Value = sL
ActiveSheet.Cells(iRow, 13).Value = sM
ActiveSheet.Cells(iRow, 14).Value = sN
ActiveSheet.Cells(iRow, 15).Value = sO
ActiveSheet.Cells(iRow, 16).Value = sP
Loop
Close iFile
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 19:54:21
Matthias
Moin!
Das Problem ist, dass du beim input immer 8 Zeilen aus der Datei einliest.
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/inputstatement
Wenn deine Textdatei aber nicht genau Vielfache von 8 hat, läuftst du in einen Fehler. Die Zeile mit EOF prüft ja nur zu diesem Zeitpunkt, ob du am Ende bist. Danach liest du die 8 Zeilen ein.
Mache da besser eine Schleife. Wenn du 8 eingelesen hast, gehst du eine Zeile weiter.
VG
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:00:03
Matthias
War grad zu schnell.
Hier mal ein angepasster Code:
Sub txt_oeffnen()
Dim sI As String, sJ As String, sK As String, sL As String, sM As String
Dim sN As String, sO As String, sP As String
sDatei = "Muster.txt"
sFile = ThisWorkbook.Path & sDatei
If Dir(sFile) = "" Then
MsgBox "Die Datei wurde nicht gefunden!"
Exit Sub
End If
iFile = FreeFile
irow = 1
spalte = 9
Open sFile For Input As iFile
Do Until EOF(iFile)
Line Input #iFile, inhalt
ActiveSheet.Cells(irow, spalte).Value = inhalt
spalte = spalte + 1
If spalte = 16 Then
spalte = 9
irow = irow + 1
End If
Loop
Close iFile
End Sub

VG
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:13:32
sigi
Hallo Matthias,
vielen Dank für Deine Unterstützung!
Leider komme ich mit Deinem Code nicht zurecht.
Als was muß "Inhalt" deklarieren?, "Variant?"
Jetzt wird alles in eine Zelle geschrieben.
Die Textdatei wird nicht getrennt!
Danke!
Gruß
Sigi
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:20:16
sigi
Hallo Matthias,
habe Deinen Code etwas ungeschrieben und nun funktioniert es.
Danke!
Gruß
Sigi
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
Do While InStr(sTxt, ";")
ActiveSheet.Cells(iRow, iCol).Value = Left(sTxt, InStr(sTxt, ";") - 1)
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, ";"))
iCol = iCol + 1
Loop
ActiveSheet.Cells(iRow, iCol).Value = sTxt
iRow = iRow + 1
iCol = 9
Loop
Close
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:36:35
Nepumuk
Hallo Sigi,
das geht auch einfacher:
Public Sub Test()
    Dim sFile As String, sTxt As String
    Dim iRow As Long
    iRow = 1
    sFile = "H:\Test.txt"
    Open sFile For Input As #1
    Do Until EOF(1)
        Line Input #1, sTxt
        Cells(iRow, 1).Resize(1, 8).Value = Split(sTxt, ";")
        iRow = iRow + 1
    Loop
    Close #1
End Sub

Gruß
Nepumuk
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:39:59
Matthias
MOin!
Falls du auf einige Schleifen verzichten willst und die lässtigen Stringoperationen, kannst du es acuh so machen. Nachteil ist aber, dass die Zahlen als Text eingetragen werden. Deswegen ist da noch zwei Zeilen drin, die DAten nochmal einträgt.
Sub txt_oeffnen()
Dim sI As String, sJ As String, sK As String, sL As String, sM As String
Dim sN As String, sO As String, sP As String
sDatei = "Muster.txt"
sFile = ThisWorkbook.Path & sDatei
If Dir(sFile) = "" Then
MsgBox "Die Datei wurde nicht gefunden!"
Exit Sub
End If
iFile = FreeFile
iRow = 1
icol = 9
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
temp = Split(sTxt, ";")
ActiveSheet.Cells(iRow, icol).Resize(, UBound(temp) + 1).Value = temp
ActiveSheet.Cells(iRow, icol).Resize(, UBound(temp) + 1).NumberFormat = "General"
ActiveSheet.Cells(iRow, icol).Resize(, UBound(temp) + 1).Value = ActiveSheet.Cells(iRow, icol). _
Resize(, UBound(temp) + 1).Value
iRow = iRow + 1
Loop
Close
End Sub

VG
Anzeige
AW: Laufzeitfehler 62 Textdatei
27.07.2019 20:42:59
sigi
Vielen Dank Matthias und Nepumuk,
beides funktioniert.
Gruß
Sigi
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 62 bei der Verarbeitung von Textdateien in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 62 in Excel VBA zu beheben, der beim Auslesen von Textdateien auftritt, kannst Du die folgenden Schritte befolgen:

  1. Datei öffnen: Stelle sicher, dass die Textdatei vorhanden ist und Du den richtigen Pfad angibst.
  2. Eingabe mit Line Input: Verwende Line Input anstelle von Input, um Zeilen aus der Datei zu lesen. Dies verhindert, dass mehrere Zeilen auf einmal eingelesen werden.
  3. Daten in Zellen schreiben: Nutze die Split-Funktion, um die eingelesene Zeile in separate Werte zu unterteilen und diese in die gewünschten Zellen zu schreiben.

Hier ist ein optimierter Code für das Einlesen der Textdatei:

Sub txt_oeffnen()
    Dim sFile As String
    Dim sTxt As String
    Dim iRow As Long
    Dim temp As Variant

    sFile = ThisWorkbook.Path & "\Test\Muster.txt"
    If Dir(sFile) = "" Then
        MsgBox "Die Datei wurde nicht gefunden!"
        Exit Sub
    End If

    iRow = 1
    Open sFile For Input As #1
    Do Until EOF(1)
        Line Input #1, sTxt
        temp = Split(sTxt, ";")
        ActiveSheet.Cells(iRow, 9).Resize(, UBound(temp) + 1).Value = temp
        iRow = iRow + 1
    Loop
    Close #1
End Sub

Häufige Fehler und Lösungen

  1. Fehler: Laufzeitfehler 62

    • Ursache: Du versuchst, mehr Werte einzulesen, als in der Zeile vorhanden sind.
    • Lösung: Stelle sicher, dass Du die Input-Anweisung anpasst, um nur die tatsächlich vorhandenen Werte zu lesen. Benutze Line Input.
  2. Fehler: Alle Daten in einer Zelle

    • Ursache: Die Verwendung von Input ohne Trennzeichen.
    • Lösung: Verwende Split, um die Daten in mehrere Zellen aufzuteilen.

Alternative Methoden

Wenn die oben genannten Methoden nicht funktionieren, kannst Du auch folgende Alternativen ausprobieren:

  • Verwendung von QueryTable: Damit kannst Du Daten aus einer Textdatei direkt in ein Excel-Arbeitsblatt importieren. Hier ist ein Beispiel:
Sub ImportTextfile()
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Path\To\Muster.txt", Destination:=Range("A1"))
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .Refresh
    End With
End Sub
  • Datenübertragung mit Power Query: Diese Methode ist besonders nützlich, wenn Du regelmäßig Daten importieren möchtest.

Praktische Beispiele

Hier sind einige praktische Beispiele zur Veranschaulichung der obigen Konzepte:

  • Beispiel 1: Wenn Deine Textdatei Daten im Format "Name;Alter;Stadt" hat, kannst Du die Split-Funktion verwenden, um jeden Wert in separate Zellen zu schreiben.
  • Beispiel 2: Wenn Du die Textdatei regelmäßig aktualisieren möchtest, kannst Du die QueryTable-Methode verwenden, um die neuesten Daten direkt in Excel zu importieren.

Tipps für Profis

  • Debugging: Nutze die Debug.Print-Anweisung, um den Inhalt von Variablen während der Ausführung zu überwachen.
  • Error Handling: Implementiere Fehlerbehandlungsroutinen, um unvorhergesehene Fehler zu erkennen und zu behandeln.
  • Modularer Code: Halte Deinen Code modular, indem Du Funktionen für wiederkehrende Aufgaben erstellst. Dies verbessert die Lesbarkeit und Wartbarkeit.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Input und Line Input? Input liest Daten als Variablen ein, während Line Input eine Zeile als Text einliest.

2. Wie kann ich sicherstellen, dass meine Textdatei korrekt formatiert ist? Überprüfe den Inhalt der Textdatei und stelle sicher, dass alle Werte durch das gewählte Trennzeichen (z.B. ;) getrennt sind.

3. Was mache ich, wenn Excel die Datei nicht finden kann? Überprüfe den Pfad zur Datei und stelle sicher, dass die Datei vorhanden ist. Du kannst auch die Dir-Funktion verwenden, um zu überprüfen, ob die Datei existiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige