Schleife beim Generieren von Text-Dateien

  • VBScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Sachsenbauch.

    Schleife beim Generieren von Text-Dateien

    Hallo Freunde,
    ich komme nicht mehr weiter bei meinem Konstrukt.
    Und zwar möchte ich aus einer Datenquelle und einen Vorlagetext (beides Textdateien) HTML-Dateien regenieren. Ähnlich der Serienbrief-Funktion sollen in der Vorlagedatei #PLATZHALTER# durch Textstrings aus der Datendatei ersetzt werden. Hierzu wird bei mir eien temporäre Datei angelegt, in der dann die Platzhalter ersetzt werden. Am Ende erfolgt eine Umbenennung in das Endprodukt - eine durch die Nummer gekennzeichnete HTL-Datei beliebigen Inhalts, aber eben den ersetzten PLATZHALTERn.
    Beim ersten Datensatz klappt dies schon ganz gut, aber es gelingt mir nicht einen Durchlauf zu coden, der mir für jeden Datensatz in der Datendatei eine HTML-Datei generiert. Es wäre schön wenn mir einer das helfen könnte.
    Hier zuerst der Aufbau der Datendatei

    Visual Basic-Quellcode

    1. Nummer;Latein;Deutsch;Fotos;Datum
    2. 2208;Aquilegia vulgaris;Akelei;28;15.03.2011
    3. 2100;Iris bakeriana;Schwertlilien;29;13.07.2011
    4. 2066;Delphinium uralense;Rittersporn;31;11.02.2010
    5. 1950;Lupinus angustifolius;Lupine;24;30.01.2008
    6. 2071;Paeonia officinalis;Pfingstrose;30;08.07.2011

    und hier das unvollständige Konstrukt HTMLGenerator.vbs:

    Visual Basic-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set Datendatei=objFSO.OpenTextFile("Daten.txt", 1) ' For Reading
    3. set Vorlagedatei=objFSO.OpenTextFile("Vorlage.txt", 1) ' For Reading
    4. Set Tempdatei=objFSO.CreateTextFile("123tmp89.txt",2 ) '2 For Writing
    5. ' | i=0
    6. ' | t = Datendatei.ReadAll
    7. ' | myArr=Split(t, vbcrlf)
    8. ' | Zeile=myArr(i)
    9. ' FOR I = 1 To 5
    10. Datendatei.SkipLine '1. Zeile überspringen
    11. u=Datendatei.Readline
    12. Arr = Split (u, ";")
    13. ' Ersatz für die #PLATZHALTER#
    14. Nummer=Arr(0)
    15. Latein=Arr(1)
    16. Deutsch=Arr(2)
    17. Do until Vorlagedatei.AtEndofStream
    18. Tempdatei.WriteLine(Vorlagedatei.Readline)
    19. Loop
    20. Tempdatei.close
    21. Vorlagedatei.Close
    22. ' Anlegen einer Tempdatei
    23. Set Tempdatei=objFSO.OpenTextFile("123tmp89.txt", 1) ' For Reading
    24. strText = Tempdatei.ReadAll
    25. Set Tempdatei=objFSO.OpenTextFile("123tmp89.txt", 2) ' For Writing
    26. ' #PLATZHALTER' in der Vorlage.txt
    27. strText1 = Replace(strText, "#NUMMER#", Nummer)
    28. strText2 = Replace(strText1, "#LATEIN#" , Latein)
    29. strText3 = Replace(strText2, "#DEUTSCH#", Deutsch)
    30. Tempdatei.Write strText3
    31. Datendatei.Close
    32. Set Tempdatei=objFSO.OpenTextFile("123tmp89.txt", 1) ' For Reading
    33. ' kopieren der Tempdatei auf die Ausgabedatei und weiterarbeiten mit dieser
    34. Set Ausgabedatei=objFSO.CreateTextFile(Nummer & ".html")
    35. Do until Tempdatei.AtEndofStream
    36. Ausgabedatei.WriteLine(Tempdatei.Readline)
    37. Loop
    38. Tempdatei.close 'wird nicht gelöscht, da immer weider neu erstellt...
    39. Ausgabedatei.Close
    40. '| i =i + 1
    41. '| NEXT


    Mein getesteter Vorschlag funktioniert natürlich nicht - Erkenntlich am '|

    Danke im voraus

    Micha :?:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sachsenbauch“ ()

    Versuch' mal damit:

    Quellcode

    1. vorlage.txt (Testdatei)
    2. Die Nummer ist: #NUMMER#
    3. Lateinisch : #LATEIN#
    4. Deutsch : #DEUTSCH#


    Visual Basic-Quellcode

    1. Set objFSO = CreateObject("Scripting.FileSystemObject")
    2. Set Datendatei = objFSO.OpenTextFile("Daten.txt", 1) ' For Reading
    3. Set Vorlagedatei = objFSO.OpenTextFile("Vorlage.txt", 1) ' For Reading
    4. 'Vorlage lesen
    5. Temp = Vorlagedatei.ReadAll()
    6. Vorlagedatei.Close
    7. Datendatei.SkipLine '1. Zeile überspringen
    8. Do Until Datendatei.AtEndofStream
    9. u=Datendatei.Readline
    10. Arr = Split (u, ";")
    11. ' Ersatz für die #PLATZHALTER#
    12. Nummer =Arr (0)
    13. Latein = Arr(1)
    14. Deutsch = Arr(2)
    15. ' #PLATZHALTER' in der Vorlage.txt
    16. Ausgabe = Temp
    17. Ausgabe = Replace(Ausgabe, "#LATEIN#" , Latein)
    18. Ausgabe = Replace(Ausgabe, "#DEUTSCH#", Deutsch)
    19. Ausgabe = Replace(Ausgabe, "#NUMMER#", Nummer)
    20. Set Ausgabedatei=objFSO.CreateTextFile(Nummer & ".html")
    21. Ausgabedatei.Writeline (Ausgabe)
    22. Ausgabedatei.Close
    23. Loop
    24. Datendatei.Close
    Hallo Eierlein,
    wie immer hat mich Deine kompetente Lösung sehr beglückt erfreut. Der Probelauf lief zur besten Zufriedenheit und generierte mir die gewünschten Dateien.
    Freundliche Grüße aus Sachsen
    Micha:el