mehrere Leerzeichen mit einem Semikolon ersetzen
Die Daten einer Textdatei soll in eine Excel Tabelle geschrieben werden (mit VBScript).
Moin moin Community
Ich habe folgendes Problem:
Ein Programm erzeugt eine Textdatei in der bestimmte Daten stehen.
Hier ein kleines Beispiel:
das ganze ist aus Übersichtsgründen nur ein teil der Datei...
Das Übertragen der Daten aus der Textdatei in eine Excel Tabelle klappt bereits, allerdings habe ich das Problem, dass ich ein Trennzeichen benötige.
Also habe ich in meinem Script als Trennzeichen das Whitespace genommen, mit dem Ergebnis, dass der Export von vielen Zeilen enorm lange dauert und in der Exceltabelle zig leere Spalten sind.
Ersetze ich mit Replace alle Whitespaces mit einem Zeichen, dann rennt der Export zu Excel richtig schnell, dann habe ich aber ganz viele Kommas oder Semikolons in der Excel tabelle...
Meine Frage:
Hat jemand eine Idee, wie man die Leerzeichen zwischen den Datensätzen in ein Trennzeichen (z.B. ;) umwandeln kann?
Vielen Dank
/*Edit
Eventuell sollte ich das Script noch hochladen...
<code=plain>
If objFSO.FileExists(strDateiname) Then
'Excel starten und neue Arbeitsmappe erzeugen
Set appEx=WScript.CreateObject("Excel.Application")
appEx.Visible=True
Set objWB=appEx.Workbooks.Add()
Set objTab=objWB.Worksheets(1)
intZeile=1
intSpalte=1
'Datei öffnen
Set objTDatei=objFSO.OpenTextFile(strDateiname,ForReading)
'Datei lesen, Zeile für Zeile
Do While objTDatei.AtEndofStream=False
strZeile=objTDatei.ReadLine()
'Aufsplitten in Array
arrDaten=Split(strZeile,vbTab)
'Für jedes Array-Element Daten in
'Tabelle schreiben
For intSpalte=1 To UBound(arrDaten)+1
objTab.Cells(intZeile,intSpalte).value=arrDaten(intSpalte-1)
Next
intZeile=intZeile+1
Loop
objTDatei.Close
'Excel beenden und Datei schließen
objWB.SaveAs objFSO.BuildPath(strPfad,"export.xls")
objWB.Close
appEx.Quit
Else
MsgBox "Datei nicht vorhanden"
End If
Gruß keksdieb
Moin moin Community
Ich habe folgendes Problem:
Ein Programm erzeugt eine Textdatei in der bestimmte Daten stehen.
Hier ein kleines Beispiel:
Ort 03.04.2009 07:13:00 757MZO KEY 0 10693,0031 1 33,38
das ganze ist aus Übersichtsgründen nur ein teil der Datei...
Das Übertragen der Daten aus der Textdatei in eine Excel Tabelle klappt bereits, allerdings habe ich das Problem, dass ich ein Trennzeichen benötige.
Also habe ich in meinem Script als Trennzeichen das Whitespace genommen, mit dem Ergebnis, dass der Export von vielen Zeilen enorm lange dauert und in der Exceltabelle zig leere Spalten sind.
Ersetze ich mit Replace alle Whitespaces mit einem Zeichen, dann rennt der Export zu Excel richtig schnell, dann habe ich aber ganz viele Kommas oder Semikolons in der Excel tabelle...
Meine Frage:
Hat jemand eine Idee, wie man die Leerzeichen zwischen den Datensätzen in ein Trennzeichen (z.B. ;) umwandeln kann?
Vielen Dank
/*Edit
Eventuell sollte ich das Script noch hochladen...
<code=plain>
If objFSO.FileExists(strDateiname) Then
'Excel starten und neue Arbeitsmappe erzeugen
Set appEx=WScript.CreateObject("Excel.Application")
appEx.Visible=True
Set objWB=appEx.Workbooks.Add()
Set objTab=objWB.Worksheets(1)
intZeile=1
intSpalte=1
'Datei öffnen
Set objTDatei=objFSO.OpenTextFile(strDateiname,ForReading)
'Datei lesen, Zeile für Zeile
Do While objTDatei.AtEndofStream=False
strZeile=objTDatei.ReadLine()
'Aufsplitten in Array
arrDaten=Split(strZeile,vbTab)
'Für jedes Array-Element Daten in
'Tabelle schreiben
For intSpalte=1 To UBound(arrDaten)+1
objTab.Cells(intZeile,intSpalte).value=arrDaten(intSpalte-1)
Next
intZeile=intZeile+1
Loop
objTDatei.Close
'Excel beenden und Datei schließen
objWB.SaveAs objFSO.BuildPath(strPfad,"export.xls")
objWB.Close
appEx.Quit
Else
MsgBox "Datei nicht vorhanden"
End If
Gruß keksdieb
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115413
Url: https://administrator.de/contentid/115413
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo keksdieb,
hier ein Ansatz: http://www.arstechnica.de/index.html?name=http://www.arstechnica.de/com ...
Damit werden schon mal alle Mehrfach-Leerzeichen in eines umgewandelt.
Dann bleibt noch das Problem die Korrektur auf ein Trennzeichen einzusetzen.
Aber ein Start sollte es auf jeden Fall schon einmal sein.
hier ein Ansatz: http://www.arstechnica.de/index.html?name=http://www.arstechnica.de/com ...
Damit werden schon mal alle Mehrfach-Leerzeichen in eines umgewandelt.
Dann bleibt noch das Problem die Korrektur auf ein Trennzeichen einzusetzen.
Aber ein Start sollte es auf jeden Fall schon einmal sein.
Hallo keksdieb,
So geht's noch etwas schneller:
Gruß Dieter
So geht's noch etwas schneller:
Dim expDaten(8)
Do Until objTDatei.AtEndofStream
impDaten = Split(objTDatei.ReadLine) ' Split default Leerzeichen
e = 1
For i = 0 To UBound(impDaten)
If impDatenx(i) <> "" Then expDaten(e) = impDaten(i): e = e + 1
Next
For intSpalte = 1 To UBound(expDaten)
objTab.Cells(intZeile, intSpalte).Value = expDaten(intSpalte)
Next
intZeile = intZeile + 1
Loop
Gruß Dieter
Hallo keksdieb,
Und so nochmal schneller:
Gruß Dieter
Und so nochmal schneller:
Dim expDaten(7)
Do Until objTDatei.AtEndofStream
impDaten = Split(objTDatei.ReadLine) ' Split default Leerzeichen
e = 0
For i = 0 To UBound(impDaten)
If impDaten(i) <> "" Then expDaten(e) = impDaten(i): e = e + 1
Next
With objTab
.Range(.Cells(intZeile, 1), .Cells(intZeile, UBound(expDaten) + 1)) = expDaten
With End
intZeile = intZeile + 1
Loop
Gruß Dieter
Hallo keksdieb,
passiert mir ab und zu auch mal.
Gruß Dieter
passiert mir ab und zu auch mal.
Gruß Dieter