TIA Mit script eine bestimmte Zeile auslesen

aleXandroW

Level-2
Beiträge
59
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte mit einem script eine bestimmte Zeile/Spalten auslesen. Über script erstelle ich eine CSV datei. Das funktioniert soweit. Wenn ich jetzt in der ersten Zeile und ersten Spalte einen Wert habe dann kann ich über lineprintstring auch ein wert auslesen. Sobald ich ein zweiten wert in der zweiten Spalte habe, kommt es zum konvertierungs Fehler. Anscheinend liest er die ganze Zeile. Wie kann ich nur bestimmte Zeilen/Spalten auslesen.
 
CSV-Dateien haben keine Spalten und Zeilen wie ein Excel-Arbeitsblatt, sondern sind Textdateien mit Zeilen-Ende-Zeichen und Werte-Separator-Zeichen (oft Semikolon ";"). Mit VBS kann man nicht wahlfrei einen bestimmten Wert in einer bestimmten Zeile adressieren, sondern muß die Datei vom Dateianfang bis zu dem gewünschten Wert einlesen:
- bestimmte Zeile lesen: vom Dateianfang Zeilen einlesen und mitzählen/auswerten bis die bestimmte Zeile eingelesen wurde
- bestimmte "Spalte" lesen: die Zeile an den Separatoren (Semicolon?) splitten (oder zeichenweise durch die Zeile gehen und die Separatoren zählen) und den so-und-so-vielten Wert nehmen

Wie sieht denn Dein Script-Code aus, was für ein Konvertierungsfehler kommt denn?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CSV Datei.JPG

So sieht die CSV Datei aus. Im Prinzip müsste ich die Mengen auslesen. 1,2 und 3 in diesem Fall.

Wenn ich nach Siemens Beispiel gehe dann muss ich mit
While fo.EOF = False
data=fo.LineInputString
Wend
alles rauslesen. Ich verstehe aber nicht was dann gemacht wird.
data=Replace(data,vbTab & vbTab,delimiter)
splitdata=Split(data,delimiter)
 
Naja ...wenn es dir nur um die 5. Zeile geht dann müßtest du wie folgt vorgehen :
- die ersten 4 Zeilen einlesen und ignorieren
- nun die 5. Zeile einlesen und darauf den Split-Befehl mit dem korrekten Trennzeichen anwenden (wahrscheinlich ist der delimiter ein Semikolon - also ";")
danach bekommst du ein Array zurück (in deinem Beispiel Splitdata), das so wie Einzelelemente hat wie in deiner Zeile die Elemente durch Semikolon getrennt wurden
beachte bitte, dass deine Array-Elemente sämtlichst Strings sind - um sie als Zahl zu verarbeiten müssen sie zunächst zu einer solchen konvertiert werden

Ich hätte da aber mal eine Kernfrage :
Was für ein System hast du denn da ? Ein Siemens-Panel ... oder eine PC-Runtime ?
Für ein Panel sähe dein Code (für den Dateizugriff) nämlich grundlegend anders aus wie für eine PC-Runtime

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jedes 'data=fo.LineInputString' liest eine Zeile der Datei ein und schiebt (für dich unsichtbar) den Lesepointer in der Datei weiter.
Du müßtest also nur eine Schleife programmieren :
Code:
for i = 1 to 4
   data = fo.LineInputString
next

Gruß
Larry
 
Ok ich habe es verstanden. Lese über die Schleife die ersten 4 Zeilen und ignoriere diese. Dann die vierte auslesen und über split Funktion auftrennen. Hat funktioniert.
Danke an alle.
 
Zurück
Oben