Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
276to280
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
276to280
276to280
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Punkt ersetzen

Punkt ersetzen
04.07.2003 11:16:51
Dari
Hallo,
stecke immer noch mit meinem Problem fest. Der Code:
'Ersetzen des Punktes durch Komma
.................................
HFile = FreeFile
Open TptFile For Input As #HFile
Do Until EOF(HFile)
zaehler = zaehler + 1
ReDim Preserve feld(1 To zaehler)
Line Input #HFile, Text
feld(zaehler) = Application.Substitute(Text, ".", ",")
Loop
Close #HFile
HFile = FreeFile
Open TptFile For Output As #HFile
For index = 1 To UBound(feld)
Print #HFile, feld(index)
Next
Close #HFile
...............................
ersetzt den Punkt durch ein Komma in einer externen Textdatei, dabei wird jedoch das dortige Datenmaterial vervielfältigt. Jens meinte dazu:
"Der Grund für die Vervielfältigung könnte eventuell darin begründet sein, dass Excel den Speicher nicht richtig aufräumt. Ganz offensichtlich "schiebt" es nur den String weiter. Dabei kann aber der Verweis auf den Endstring schon mal falsch erzeugt werden, womit auch das vorhergehende Datenpaket ausgelesen wird (dies wäre eine Möglichkeit, die ich selbst schon beobachtet habe)."
Von Jens bekam ich dann auch noch einen guten Tipp, müßte dazu aber meine gesamte Struktur umbauen. Hat vielleicht jemand doch eine Idee, wie ich den vorhanden Code (siehe oben), erweitern, verändern oder sonstwie umbauen sollte, um diese dubiose Vervielfältigung zu beseitigen ?
Gruß
Dari

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Punkt ersetzen
04.07.2003 12:30:25
andre
hallo dari,
stricke das makro doch mal so um, dass du die input-datei einliesst und gleichzeitig in eine .tmp den konvertierten string ausgibst. da sparst du auch das array dabei ein. am ende noch die input-datei löschen und die .tmp umbenennen - und fertig.
Public

Sub test()
Dim feld()
tptfile = "c:\test.txt"
tmpfile = "c:\test.tmp"
HinFile = FreeFile
Open tptfile For Input As #HinFile
HoutFile = FreeFile
Open tmpfile For Output As #HoutFile
Do Until EOF(HinFile)
Line Input #HinFile, Text
Print #HoutFile, Application.Substitute(Text, ".", ",")
Loop
Close #HinFile
Close #HoutFile
Kill "c:\test.txt"
Name "c:\test.tmp" As "c:\test.txt"
End Sub

gruss andre

Anzeige
AW: Punkt ersetzen
04.07.2003 13:08:49
Dari
Hallo, Andre,
habe ein Problem, diesen Code in meine Struktur zu überführen. Ich verstehe auch nicht richtig was der Pfad TptFile = "c:\test.txt" soll, dies muss bei mir die jeweilige geöffnete Datei sein.
'Öffnen der Messdatei und Speichern als Exceldatei
---------------------------------------------------
TptFile = Application.GetOpenFilename("Messdateien (*.s01),*.s01,")
XlsName = Left(TptFile, Len(TptFile) - 4) + ".xls"
If TptFile = False Then Exit Sub
'Ersetzen des Punktes
-----------------------
TptFile = "c:\test.txt"
tmpfile = "c:\test.tmp"
HinFile = FreeFile
Open TptFile For Input As #HinFile
HoutFile = FreeFile
Open tmpfile For Output As #HoutFile
Do Until EOF(HinFile)
Line Input #HinFile, Text
Print #HoutFile, Application.Substitute(Text, ".", ",")
Loop
Close #HinFile
Close #HoutFile
Kill "c:\test.txt"
Name "c:\test.tmp" As "c:\test.txt"
--------------------------------
'Überführen der Textdateidaten
-------------------------------
Application.Workbooks.OpenText FileName:=TptFile, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 1))
Wahrscheinlich muss man die Pfade flexibilisieren ...
Gruß
Dari

Anzeige
AW: Punkt ersetzen
04.07.2003 13:08:42
Dari
Hallo, Andre,
habe ein Problem, diesen Code in meine Struktur zu überführen. Ich verstehe auch nicht richtig was der Pfad TptFile = "c:\test.txt" soll, dies muss bei mir die jeweilige geöffnete Datei sein.
'Öffnen der Messdatei und Speichern als Exceldatei
---------------------------------------------------
TptFile = Application.GetOpenFilename("Messdateien (*.s01),*.s01,")
XlsName = Left(TptFile, Len(TptFile) - 4) + ".xls"
If TptFile = False Then Exit Sub
'Ersetzen des Punktes
-----------------------
TptFile = "c:\test.txt"
tmpfile = "c:\test.tmp"
HinFile = FreeFile
Open TptFile For Input As #HinFile
HoutFile = FreeFile
Open tmpfile For Output As #HoutFile
Do Until EOF(HinFile)
Line Input #HinFile, Text
Print #HoutFile, Application.Substitute(Text, ".", ",")
Loop
Close #HinFile
Close #HoutFile
Kill "c:\test.txt"
Name "c:\test.tmp" As "c:\test.txt"
--------------------------------
'Überführen der Textdateidaten
-------------------------------
Application.Workbooks.OpenText FileName:=TptFile, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 1))
Wahrscheinlich muss man die Pfade flexibilisieren ...
Gruß
Dari

Anzeige
AW: Punkt ersetzen
04.07.2003 13:18:05
andre
hallo dari,
eventuell so:
...
TmpFile = Left(TptFile, Len(TptFile) - 4) + ".tmp"
'Ersetzen des Punktes
'-----------------------
HinFile = FreeFile
Open TptFile For Input As #HinFile
HoutFile = FreeFile
Open TmpFile For Output As #HoutFile
Do Until EOF(HinFile)
Line Input #HinFile, Text
Print #HoutFile, Application.Substitute(Text, ".", ",")
Loop
Close #HinFile
Close #HoutFile
Kill TptFile
Name TmpFile As TptFile
'--------------------------------
'Überführen der Textdateidaten
...
gruss andre

AW: Punkt ersetzen
04.07.2003 13:46:23
Dari
Ich glaub ich werd verrückt, es tut ...

Anzeige
AW: Punkt ersetzen
04.07.2003 12:59:28
Andreas Walter
Ja ich schon wieder
Erstens habe ich Dir einen konkreten Vorschlag gemacht - was kam daraus?
Zweitens habe ich zwei Tipps gegeben - wie sieht es da aus
Jetzt Neu:
Post mal alles (nicht nur ein Auszug)
Benutz mal OPTION EXPLICIT
Kontrollier die Variable zaehler
Es passiert NICHT bei mir
Habe ich es irgendwo in Erinnerung, dass es nur das 2. Mal vorkommt?
Was Du beschreibst ist das die Variable FELD() zu viele Einträge hat. Ist das so?
Kommt aus
einer Datei mit drei Zeilen
A
B
C
Eine Datei mit 6 Zeilen
A
B
C
A
B
C

Anzeige
AW: Punkt ersetzen
04.07.2003 13:14:54
Dari
Hallo, Andre,
zu meiner Schande muss ich gestehen, dass ich den Punkt ersetzten Code auch nur zugesendet bekam, ich blick ehrlich gesagt gar nicht richtig, was da passiert, von daher weiß ich gar nicht, was ich an dem Zähler verändern soll. Der ganze Code lautet:
Sub CreateXlsFile()
Dim XlsFile As Variant
Dim TptFile As Variant
Dim XlsName As String
Dim HFile As Integer, Text As String, feld() As String, zaehler As Long, index As Long
'Öffnen der Messdatei und Speichern als Exceldatei
TptFile = Application.GetOpenFilename("Messdateien (*.s01),*.s01,")
XlsName = Left(TptFile, Len(TptFile) - 4) + ".xls"
If TptFile = False Then Exit Sub
'Ersetzen des Punktes
HFile = FreeFile
Open TptFile For Input As #HFile
Do Until EOF(HFile)
zaehler = zaehler + 1
ReDim Preserve feld(1 To zaehler)
Line Input #HFile, Text
feld(zaehler) = Application.Substitute(Text, ".", ",")
Loop
Close #HFile
HFile = FreeFile
Open TptFile For Output As #HFile
For index = 1 To UBound(feld)
Print #HFile, feld(index)
Next
Close #HFile
'Überführen der Textdateidaten
Application.Workbooks.OpenText FileName:=TptFile, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 1))

Columns("B:B").Select
Selection.NumberFormat = "0.00E+00"
Selection.NumberFormat = "0.00"
Range("C1").Select

XlsFile = Application.GetSaveAsFilename(XlsName, "Exceldateien (*.xls),*.xls,")
ActiveWorkbook.SaveAs XlsFile, xlWorkbookNormal

Sheets(1).Select
Sheets(1).Name = "Rohdaten"
Gruß
Dari

Anzeige
AW: Punkt ersetzen
04.07.2003 13:28:31
Andreas Walter
> ich blick ehrlich gesagt gar nicht richtig, was da passiert
Ja
Daher ganz langsam.
Ich habe vorgeschlagen eine Zeile einzufügen und zwar diese
zaehler=0
Diese Zeile sollte zwischen folgenden Zeilen eingefügt werden
Open TptFile For Input As #HFile
Do Until EOF(HFile)
Damit es wie folgt aussieht
Open TptFile For Input As #HFile
zaehler=0
Do Until EOF(HFile)
Mach das und sag das Problem weg ist
Wenn nicht, dann lies genau durch, was ich vorhin geschrieben habe und versuche die darin enthaltene Fragen zu beantworten.

AW: Punkt ersetzen
04.07.2003 13:48:32
Dari
Hallo, Andre,
vielen Dank, es haut hin ... (beide Lösungen, auch die andere)
Gruß und schönes Wochenende
Dari

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige