mmatt851
Goto Top

VBS Wert aus einer Textdatei lesen und in eine andere Textdatei übertragen

Hallo,

ich habe folgendes Problem. Leider bin ich "noch ein VBS Anfänger und ich soll ein kleines Programm schreiben welches die Werte aus einer Textdatei herauszieht ( ist immer die Letzte Zeile der gleichen Textdatei) und in eine andere Leere Textdatei schreibt. Von dieser neuen Textdatei greift dann ein externe System darauf zu und zeiht sich den Wert.
Der Wert steht nach dem zweiten ; in der Zeile.

;01.09.2011;1087;;;;;;1087;;;N/mm²;

Mein Problem ist es jetzt das ich zwar eine neue Textdatei generiere, jedoch kein Inhalt übertragen und wie komme ich genau an den zweiten Wert (1087) in der Zeile?
Kann mir da jemansd helfen?
Vielen Dank schonmal face-smile

Set fso = CreateObject("Scripting.FileSystemObject")  
Set o = fso.GetFolder("M:\Matt\_25_Haertepruefung_WBH\Datei")  
Set da = o.Files
counter = o.Files.Count   ' Zählt die Anzahl der Dateien im Ordner  
msgbox counter
if counter > 1 then
msgbox "Es sind mehrere Dateien vorhanden, es ist nur eine Messwertdatei im Ordner zulässig!!"  
WScript.Quit
end if
For Each d in da
    s = s & d.path
    msgbox s  
    next  
' ----- Härtewert wird aus der Datei gelesen ------        
Set fso = CreateObject("Scripting.FileSystemObject")  
set oFile = fso.OpenTextFile(s,1)
Zeilen = Split(oFile.ReadAll, vbCrLf)
AnzahlZeilen = oFile.Line
msgbox AnzahlZeilen
oFile.close

Set Textdatei = fso.CreateTextfile("M:\Matt\_25_Haertepruefung_WBH\Datei\Haertewert.txt",2)  
Textdatei.WriteLine Zeilen(AnzahlZeilen - 1)
Textdatei.close

Content-Key: 174676

Url: https://administrator.de/contentid/174676

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: bastla
bastla 14.10.2011 um 11:25:53 Uhr
Goto Top
Hallo mmatt851 und willkommen im Forum!

Da Du ja ein Array "Zeilen" erzeugst, kannst Du die letzte Zeile über
LetzteZeile = Zeilen(UBound(Zeilen))
erhalten.

Falls am Ende der Datei noch eine Zeilenschaltung stünde, wäre diese letzte Zeile leer - daher prüfen und ggf die vorletzte Zeile verwenden:
If Trim(LetzteZeile) = "" Then LetzteZeile = Zeilen(UBound(Zeilen) - 1)
wie komme ich genau an den zweiten Wert (1087) in der Zeile?
Soferne ";" das Trennzeichen ist, handelt es sich bei "1087" um den dritten Wert der Zeile (allerdings mit dem Index 2, wenn Du die Zeile per "Split()" zerlegst) ...

Grüße
bastla
Mitglied: Skyemugen
Skyemugen 14.10.2011 um 11:40:11 Uhr
Goto Top
Aloha,

... warum zählst du die Anzahl der Dateien im Ordner, wenn es

immer die Letzte Zeile der gleichen Textdatei

ist? Dann gib' doch an, um welche Datei es sich handelt ...

Mit batch wär's doch so schön einfach face-wink

VBS wäre mir dafür zu aufwändig face-wink

greetz André
Mitglied: mmatt851
mmatt851 14.10.2011 um 13:19:38 Uhr
Goto Top
Mit Batch habe ich leider keinerlei Erfahrung!

Es darf sich nur eine Datei im Ordner befinden, sonst könnten die falschen Werte verwendet werden.

@ bastla: wo kann ich den split befehl einbringen?
Mitglied: bastla
bastla 14.10.2011 um 13:23:13 Uhr
Goto Top
Hallo mmatt851!
wo kann ich den split befehl einbringen?
Wo Du willst - solange es nach dem Ermitteln von "LetzteZeile" und vor dem Schreiben in die Zieldatei passiert ... face-wink

Grüße
bastla
Mitglied: mmatt851
mmatt851 14.10.2011 um 14:20:25 Uhr
Goto Top
' ----- Härtewert wird aus der Datei gelesen ------        
Set fso = CreateObject("Scripting.FileSystemObject")  
If fso.FileExists(s) then
set oFile =fso.opentextfile(s)
sLines = split(oFile.ReadAll, vbcrlf)
oFile.close

Readline = slines(UBound(slines) + nLine - 1)
msgbox Readline

End if

'----- Wert in neue Textdatei schreiben -----  
sText "Hallo"   
Set Textdatei = fso.CreateTextfile("M:\Matt\_25_Haertepruefung_WBH\Datei\1\Haertewert.txt",2)  
Textdatei.WriteLine sText
Textdatei.close

Ich habe es nun so gelöst! Irgendwie stehe ich auf dem Schlauch face-sad
Wenn ich es richtig verstehe habe ich jetzt nun meine gewünschte Zeile in Readline. Oder?
Nun möchte ich bei Readline den Split Befehl anwenden um an den Wert zu kommen, doch da kommt immer die Meldung, dass die Typen unverträglich sind!
Was mache ich falsch?
Mitglied: bastla
bastla 14.10.2011 um 14:49:58 Uhr
Goto Top
Hallo mmatt851!

Was soll denn "nLine" darstellen?

Anyhow, wenn Du in "Readline" (es ist übrigens keine gute Idee, Variablen den Namen von Eigenschaften oder, wie hier, Methoden zu geben) die gesuchte Zeile hast, kannst Du mit
Wert = Split(Readline, ";")(2)
den Inhalt des 3. Feldes auslesen ...

Grüße
bastla

P.S.: Dein "End If" kommt in Zeile 11 zu früh - wenn es keine Quelldatei gab, hat es auch keinen Sinn, eine Zieldatei zu erstellen ...
Mitglied: mmatt851
mmatt851 14.10.2011 um 15:05:00 Uhr
Goto Top
Danke bastla für deine Hinweise!

Habe sie so umgesetzt und das Programm läuft und erfüllt seinen Zweck!

Vielen Dank!

Grüße
mmatt851