Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen