Problem mit Text Datei

ThLey

Grünschnabel
Zweiter Versuch.

Problem mit VBS.

Habe eine HTML Datei. Diese lese ich in einen TextString.

Dieser soll nach einem Marker durchsuchtwerden:
<!-- <--Wochenplan--> --> <!-- <--/Wochenplan--> -->

Den Text zwischen diesen Makern möchte ich in einem Array speichern um damit
eine neue Datei erstellen zu können. In dieser Datei muss jeweils vor und hinter dem
Marker eine Zeile eingefügt werden.

Ich schaffe en nicht, hier die richtige Schleife aufzubauen. Wer kann helfen?
Hier der abschnitt um den es geht.

Code:
'*******************************Funktion die String durchsucht*******************
Wochenplan_1 = InStr( 1,FileString,"<!-- <Wochenplan> -->",1)
If Wochenplan_1 > 0 Then

		Wochenplan_2 = InStr( Wochenplan_1, FileString,"<!-- </Wochenplan> -->",1)

Der nachfolgende aufruf der Funktion gibt die Fehlermeldung: Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung:'MultiSpit'

Was heißt dass?


Kompletter Code:

Code:
' File:   Monitor.vbs
' Autor:  
'
' Skript liest eine html-Datei ein. Sucht nach der Textmarke
' <!-- <Wochenplan> --> fügt davor folgende Zeile ein:
' <table border="0" width="100%"><colgroup><col width="50%"><col width="50%"></colgroup><tr><td>
' Nach dem zweiten Textmarker wird das </td> geschlossen und vor dem nächsten Marker wieder geöffnet: <td>
' Der vierte Marker zeigt das Ende. Hiernach wird die TR und die TABLE geschlossen.
' Die vorhandene <!-- <Fusszeile> --> wird verworfen.
' 
'****************************************************************************** 
'Mit Option Explicit ist festgelegt, das nur Variable im Skript benutzt werden, die mit DIM-Anweisungen deklariert sind.
Option Explicit

'Deklaration der Variablen***************************************************
Dim WSHShell, objFSO, objNetwork
Dim FileMonitor, FilePub, KW_Links, KW_Rechts
Dim Zeile1, Zeile2
Dim FileIn, FileZ, FileOut, Zaehler
Dim Wochenplan_1, Wochenplan_2, i, List1
Dim FileString
Dim Test

Dim lngCount
'Dim strAusgabe()

		Dim strEingabe        '   Text 
    Dim lngMarkerCount    '   Anzahl Marker
    Dim lngMarkerPos      '   Position des Markers
    Dim lngPos            '   Aktuelle Position im Text
    Dim strAusgabe()      '   Ausgabeliste
    Dim lngAusgabe        '   Anzahl Elemente in der Ausgabeliste
    Dim lngSuche          '   Position des nächsten Markers
'******************************************************************************

'Einzufügende Zeile

Zeile1 = "<table border=""0"" width=""100%""><colgroup><col width=""50%""><col width=""50%""></colgroup><tr><td>"
Zeile2= "</td><td>"

'Erzeugen von Objektreferenzen************************************************

Set WSHShell   = WScript.CreateObject("WScript.Shell")
Set objFSO     = WScript.CreateObject("Scripting.FileSystemObject")
Set objNetwork = WScript.CreateObject("WScript.Network")

'*****************AUSGABE FESTLEGEN********************************************
'Festlegen des Ausgabe Dateinamens
FileMonitor = "Monitor_2.html"
'Festlegen der KW Links
KW_Links=4                   'noch ohne abfrage
'Festlegen der KW Rechts
KW_Rechts=5									'noch ohne abfrage
'Festlegen der Einzulesenden Datei. Übersicht über zwei KW
FilePub = "ausgabe.html"
'******************************************************************************

'Prüfen ob Datei vorhanden*****************************************************
If objFSO.FileExists("C:\Monitor\" + FilePub) Then
	'Ja, Datei zum lesen/schreiben öffnen
		' Wert 1= Datei wird zum lesen geöffnet
		' Wert 2= Datei wird zum schreiben geöffnet
		' Wert 8= Datei wird zum Anhängen von Text geöffnet
		Set FileIn = objFSO.OpenTextFile("C:\Monitor\" + FilePub, 1, False) 
		
		'Datei einlesen. Text String wird zurückgeliefert
		' ReadAll() liest die komplette Textdatei
		' ReadLine() liest eine Zeile
		' Read(AnzahlZeichen)
		FileString = FileIn.ReadAll()
		FileIn.close()
		
		'TEST Inhalt ausgeben
		'WScript.Echo FileString
Else
		WScript.Echo "Datei: " & FilePub & " nicht gefunden!"
End If

'********************************************************************************

'Nach <!-- <Wochenplan> --> suchen
' InStr() liefert die genaue Strartposition des gesuchten Zeichen, Wortrs zurück
' InStr(Startposition, Zeichenkette, SuchText, Vergleichsart)
' Startposition: gibt a, ab welchem Zeichen der String durchsucht werden soll
' Zeichenkette: der zu durchsuchende Sting
' SuchText: gesuchtes Wort, Zeichen
' Vergleichsart: Mittels konst. vbTextCompare: Kein unterschied in Groß/klein. 	vbBinaryCompare
' Wert = 0 Wort nicht vorhanden

'*******************************Funktion die String durchsucht*******************
Wochenplan_1 = InStr( 1,FileString,"<!-- <Wochenplan> -->",1)
If Wochenplan_1 > 0 Then
		Wochenplan_2 = InStr( Wochenplan_1, FileString,"<!-- </Wochenplan> -->",1)
			
	
			
			
	   'In Array zwischenspeichern
	   'FileZ = Split(FileString, "<!-- <Wochenplan> -->"& "<!-- </Wochenplan> -->")
	  ' FileZ = Split(FileString, "<!-- </Wochenplan> -->")


''Aufruf der Funktion*************************************************************	
'	
'MultiSplit FileString, "<!-- <Wochenplan> -->","<!-- </Wochenplan> -->"
'		 
'		 '   Zerlegte Eingabe in die Liste schreiben
'    For lngCount = LBound(strAusgabe) To UBound(strAusgabe)
'        FileString.List1.AddItem strAusgabe(lngCount)
'    Next  

''*******************************************************************************		 
		 
'Test ausgaben		 
	'WScript.Echo Wochenplan_1
	'WScript.Echo Wochenplan_2
'	WScript.Echo (FileZ(0))
'	WScript.Echo (FileZ(1))
'	WScript.Echo (FileZ(2))

Else
 MsgBox "Nicht gefunden"
' Exit Do
End If
'Loop

'Erzeugen der Ausgabe Datei. ******************************************************
' true/false = erlaubt das überschreiben einer vorhandenen Datei 
If  not objFSO.FileExists("C:\Monitor\" + FileMonitor) Then
	Set FileOut = objFSO.CreateTextFile("C:\Monitor\" + FileMonitor, true)
	Set FileOut = objFSO.OpenTextFile("C:\Monitor\" + FileMonitor, 2, true) 
Else
	'Ja, Datei zum lesen/schreiben öffnen
		' Wert 1= Datei wird zum lesen geöffnet
		' Wert 2= Datei wird zum schreiben geöffnet
		' Wert 8= Datei wird zum Anhängen von Text geöffnet
		Set FileOut = objFSO.OpenTextFile("C:\Monitor\" + FileMonitor, 2, true) 
End If
	FileOut.Write(Left(FileString, (Wochenplan_1-1)))
	FileOut.WriteLine(Zeile1)
	FileOut.Write (Mid (FileString, Wochenplan_1,(Wochenplan_2+21 - Wochenplan_1)))
	FileOut.WriteLine(Zeile2)
	FileOut.Close()


WScript.Quit

''Funktion************************************************************
'Function MultiSplit(StringToParse ,Marker() )'Zu parsender Text, Marker
'		Dim strEingabe        '   Text 
'    Dim lngMarkerCount    '   Anzahl Marker
'    Dim lngMarkerPos      '   Position des Markers
'    Dim lngPos            '   Aktuelle Position im Text
'    Dim strAusgabe()      '   Ausgabeliste
'    Dim lngAusgabe        '   Anzahl Elemente in der Ausgabeliste
'    Dim lngSuche          '   Position des nächsten Markers
'    
'    '   Alle Marker durchlaufen
''    For lngMarkerCount = LBound(Marker) To UBound(Marker)
''        '   Maskierten Marker ersetzen
''        strEingabe = Replace(strEingabe, "\" & Marker(lngMarkerCount), "Marker" & CStr(lngMarkerCount))
''    Next 
'    
'    '   Position, ab der gesucht wird
'    lngPos = 1
'    
''    '   Ausgabe auf 1 Feld dimensionieren
''    ReDim strAusgabe(0)
'    lngAusgabe = LBound(strAusgabe)
'    
'    '   Text durchsuchen
'    Do
'        '   Position des nächsten Markers ist unbekannt
'        lngSuche = 0
'        
'        '   Alle Marker durchlaufen
'        For lngMarkerCount = LBound(Marker) To UBound(Marker)
'            '   Position suchen
'            lngMarkerPos = InStr(lngPos, strEingabe, Marker(lngMarkerCount), vbTextCompare)
'            
'            '   Ist noch kein Marker bekannt?
'            If (lngSuche = 0) Then
'                '   Ja, Position dieses Markers speichern
'                lngSuche = lngMarkerPos
'            Else
'                '   Nein, ist ein Marker gefunden worden und ist die Position kleiner als die bisher gefundene?
'                If (lngMarkerPos <> 0) And (lngSuche > lngMarkerPos) Then
'                    '   Ja, Positin des Markers speichern
'                    lngSuche = lngMarkerPos
'                End If
'            End If
'        Next 
'        
'        '   Muß das Ausgabe-Feld redimensioniert werden?
'     '   If (lngAusgabe > UBound(strAusgabe)) Then
'     '       '   Ja, also weitere 10 Felder einfügen
'     '       ReDim Preserve strAusgabe(LBound(strAusgabe) To UBound(strAusgabe) + 10)
'     '   End If
'        
'        '   Wurde ein Zeichen gefunden?
'        If (lngSuche <> 0) Then
'            '   Ja, Teil einfügen
'            strAusgabe(lngAusgabe) = Trim(Mid(strEingabe, lngPos - 1, lngSuche - lngPos + 1))
'            
'            '   Position neu setzen
'            lngPos = lngSuche + 1
'        Else
'            '   Nein, den Rest kopieren
'            strAusgabe(lngAusgabe) = Mid(strEingabe, lngPos - 1)
'        End If
'        
'        '   Alle Marker durchlaufen
'        For lngMarkerCount = LBound(Marker) To UBound(Marker)
'            '   Ersetzten Marker maskieren
'            strAusgabe(lngAusgabe) = Replace(strAusgabe(lngAusgabe),"Marker" & CStr(lngMarkerCount), "\" & Marker(lngMarkerCount))
'        Next 
'        
'        '   Index inkrementieren
'        lngAusgabe = lngAusgabe + 1
'    Loop Until (lngSuche = 0)
'    
'    '   Ausgabe zurechtstutzen (lngAusgabe ist wegen der Umwandlung um eins zu groß)
''    ReDim Preserve strAusgabe(LBound(strAusgabe) To lngAusgabe - 1)
'
'    '   Ausgabe zurückgeben
'    MultiSplit = strAusgabe
'End Function
 
Hier die ausgangs HTML und das ZIEL.

Wer kann mir da einen Tipp geben?
 

Anhänge

  • Ziel.txt
    13,5 KB · Aufrufe: 44
  • DieHTMLDatei.txt
    13,4 KB · Aufrufe: 38

Neue Beiträge

Zurück