Zeile einfügen in Textdatei per VBS

Hallo,

ich möchte einen String in eine Textdatei über VBS einfügen.
Der String nimmt eine ganze Zeile ein.
String ist in meinem Beispiel die „Sequenznr“

Der String soll immer an der gleichen Stelle in der Textdatei stehen.

Meine Idee ist dass nach einem Begriff gesucht wird, wäre in meinem Besipiel der Begriff " Bediener". Dieser Begriff ist immer fest und in jeder Textdatei vorhanden.
Nach diesem Begriff soll der String/Zeile eingefügt werden.

Hab schon lange gesucht doch nichts genaues gefunden.
Hoffe auf Hilfe :wink:
Schonmal jetzt vielen Dank!

Hier mein bisheriger Code:

today = Date()
Dim present
present = Time()
Zeitstempel = Year(today) & right(„0“ & Month(today), 2) & right(„0“ & Day(today), 2) & right(„0“ & Hour(present), 2) & right(„0“ & Minute(present), 2) & right(„0“ & Second(present), 2)

Set fso = CreateObject(„Scripting.FileSystemObject“)
Set oFile = fso.OpenTextFile(„M:\Matt_16_VBS\Datapage\52585.txt“)
i=0
’ Erstmal zählen wieviele Einträge
while not oFile.AtEndOfStream
i=i+1
oFile.ReadLine
Wend
oFile.Close
’ Array definieren
REDIM sEingabe(i)
Set oFile = fso.OpenTextFile(„M:\Matt_16_VBS\Datapage\52585.txt“)
i=0
’ Jetzt Werte ins Array übernehmen
while not oFile.AtEndOfStream
sEingabe(i)=oFile.ReadLine
i=i+1
Wend
oFile.Close
'Beispiel für Zugriff

for j= 1 to i
if Instr(sEingabe(j), „Auftragsnummer“) then
Auftragsnr = mid(sEingabe(j), 18)
end if
next
for k= 1 to i
if Instr(sEingabe(k), „Werkzeugnummer“) then
Werkzeugnr = mid(sEingabe(k), 18)
end if
next
for m= 1 to i
if Instr(sEingabe(m), „Chargennummer“) then
Chargennr = mid(sEingabe(m), 17)
end if
next
Sequenznr = Zeitstempel & „$“ & Auftragsnr & „$“ & Werkzeugnr & „$“ & Chargennr

msgbox Sequenznr

Const ForReading = 1, ForWriting = 2, ForAppending = 8
set File = fso.OpenTextFile(„M:\Matt_16_VBS\Datapage\52585.txt“)
strGelesen = File.ReadAll
strGelesen = Replace(strGelesen,";",",")

msgbox strgelesen

Hi Faro01.

Ich habe jetzt nicht deinen ganzen Code gelesen, sondern nur ab set File…

Du hast zwar die Const gesetzt, aber übergibst sie der Methode nicht…

Hier ein Beispiel:
Unbedingt 8 für ForAppending setzen.

Set fso = CreateObject(„Scripting.FileSystemObject“) 
Set oFile = fso.OpenTextFile(„C:\log.txt“,8,true) 
If err.Number 0 Then 
oFile.WriteLine "Fehler2: " & err.Number & " " & err.Description 
err.Clear 
Else 
oFile.WriteLine „Kein Fehler aufgetreten.“  
End If 
oFile.close

Grüße Sebastian

Hallo,

also den Teil vom Code den ich gepostet habe läuft einwandfrei. Nur danach soll/muss ich die Sequenznr in die Textdatei schreiben.

Der Kopf der textdatei ist folgendermaßen aufgebaut:

Datum: 27.05.2011 11:14:40
Merkmalname;Sollwert;UT;LT;Gemessen
Bauteilname - 52285 Zylinderkopf 01
Bediener - Eichhorn
Prüfplannummer - 010 33 52585
Auftragsnummer - 208991
Werkzeugnummer - Nest1
Chargennummer - 759427
Hinweis -
Fehler - aktive Ausrichtung - 0,000mm
P04-02-08-24124 Aktueller Gerätefehler -

Möglichkeit 1 wäre die Sequenznr als erstes zu positionieren. Über dem Datum!(was mir am liebsten wäre)
Möglichkeit 2 wäre die Sequenznr hinter der Zeile „Bediener“ einzufügen.

Momentan habe ich so angefangen dass ich mit einer for schleife nach Bediener suche den habe ich auch gefunden doch wenn ich nun versuche mit writeline etwas einzufügen schreibt es mir nur die Sequenznr in die Textdatei und löscht den Rest.

Ich mache viel mit VBA doch VBS ist doch etwas anderst.
Hoffe es war einigermaßen verständlich meine Erklärung.

Kannst du mir vll den Befehl Appending etwas genauer Erklären?

Grüße
Markus

Hallo,

habe die Lösung für mein Problem gefunden:

strGelesen = Replace(strGelesen, „Datum:“, „Sequenznummer“ & " - " & Sequenznr & vbCrLf & „Datum:“)

fso.CreateTextFile(„M:\Matt_16_VBS\Datapage\52585.txt“, True).Write strgelesen

einfach ein weiteres replace() und write erzeugen mir die gewünschte Textdatei!

Grüße

Hi Markus.

Kannst du mir vll den Befehl Appending etwas genauer Erklären?

Appending bedeutet anhängen, du positionierts den Zeiger an das Ende der Datei und schreibst dann die Zeile am Ende der Datei.

Du könntest für deinen Fall einfach die komplette Datei einlesen und dann deine Änderungen am Text vornehmen und wieder die Datei komplett (mit der neuen Zeile) in eine Datei schreiben.

Gruß Sebastian

Ich bin leider kein VBS Experte. Ich hantiere eher mit c# herum. Aber so ein großes Problem sollte das nicht sein und es findet sich bestimmt ein Kompetenter Kollege, der Dir weiterhilft.