title image


Smiley Re: Arbeiten mit 2 Textfiles und Variablen: Bitte um Hilfe!
Hallo,



für Deine Aufgabe brauchst Du gar kein Word mitsamt VBA, die "Bordmittel"-Skriptsprache von Windows (VBS) ist gerade für solche Sachen gut geeignet.



Ein Beispiel unter der Annahme, dass Deine "Datensätze" in der Variablendatei durch vbcrlf getrennt sind (ansonsten kannnst Du den "Delimiter" im Code nach Wunsch ändern):



Option ExplicitConst ForReading = 1, ForWriting = 2Dim fso, fdata, ftoken, sdata, t, p, d, kIf wscript.arguments.Count <> 2 Then  wscript.echo "Usage: Replace datafilename tokenfilename"  wscript.QuitEnd IfSet fso = CreateObject("Scripting.FileSystemObject")On Error Resume NextSet fdata = fso.OpenTextFile(wscript.arguments.Item(0), ForReading, False)If Err Then  wscript.echo "Error opening file " & wscript.arguments.Item(0)  wscript.QuitEnd IfSet ftoken = fso.OpenTextFile(wscript.arguments.Item(1), ForReading, False)If Err Then  wscript.echo "Error opening file " & wscript.arguments.Item(1)  wscript.QuitEnd IfSet d = CreateObject("Scripting.Dictionary")' assuming dataset delimiter is vbcrlfFor Each t In Split(ftoken.ReadAll, vbCrLf, -1, 1)  p = InStr(2, t, "$", 0)  If p Then    If d.Exists(Left(t, p)) Then      wscript.echo "Duplicate key " & Left(t, p)    Else      d.Add Left(t, p), Mid(t, p + 1)    End If  End IfNextftoken.Closesdata = fdata.ReadAllfdata.CloseFor Each k In d.Keys  sdata = Replace(sdata, k, d(k))NextSet fdata = fso.OpenTextFile(wscript.arguments.Item(0), ForWriting, False)fdata.Write sdatafdata.Closewscript.echo "OK"



Der Code gehört in eine Textdatei mit Endung vbs und Du kannst das Skript per Kommandozeile (Eingabeaufforderung) mit der Anweisung CSCRIPT dateiname.vbs datei1 datei2 (2 Parameter, Datei1 mit den zu ersetzendem Variablen und Datei2 mit der Variablendefinition) starten.

Der Code funktioniert auch in VB/VBA, wenn Du alle wscript-Anweisungen passend ersetzt.



Grüße

Wolfram







geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: