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

Printed on: April 18, 2024 at 08:04 o'clock

Member: bastla
bastla Oct 14, 2011 at 09:25:53 (UTC)
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
Member: Skyemugen
Skyemugen Oct 14, 2011 at 09:40:11 (UTC)
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é
Member: mmatt851
mmatt851 Oct 14, 2011 at 11:19:38 (UTC)
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?
Member: bastla
bastla Oct 14, 2011 at 11:23:13 (UTC)
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
Member: mmatt851
mmatt851 Oct 14, 2011 at 12:20:25 (UTC)
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?
Member: bastla
bastla Oct 14, 2011 at 12:49:58 (UTC)
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 ...
Member: mmatt851
mmatt851 Oct 14, 2011 at 13:05:00 (UTC)
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