Hallo,
ich benötige wieder mal Euer spezielles Insider-Know How. Mir bringt ein zusammengebasteltes Script immer wieder Fehlermeldungen.
Und zwar möchte ich ordnerweise aus Textdateien die Textzeilen extrahieren, die mit einem Vergleichstext übereinstimmen. Diese Zeilen soll dann in Datei geschrieben werden, deren Endung sich in .txt ändern soll. Mit dem zweiten Teil des Scripts bin ich ganz gut gefahren, musste jedoch immer den Namen der Quelldatei eingeben, das ist bei ca. 15 Dateien pro Ordner und 25 Ordnern (x 10 Jahrgängen) doch ziemlich aufwendig. Also habe ich diesen Teil an ein vorhandenes Script angefügt und angepasst. Aber ich bekomme bei Zeile 39 den Fehler: ungültiger Dateimodus. Was mache ich falsch ?
Ein zweites Problem besteht innerhalb des Tags Problemzone darin, dass ich gern die nachfolgende Zeile(n) ausgelesen haben möchte, wie baut man einen Zeilenzähler ein..
Über eine konkrete Antwort würde ich mich als VBS-Neuling sehr freuen.
Vielen Danke !
Micha
ich benötige wieder mal Euer spezielles Insider-Know How. Mir bringt ein zusammengebasteltes Script immer wieder Fehlermeldungen.
Und zwar möchte ich ordnerweise aus Textdateien die Textzeilen extrahieren, die mit einem Vergleichstext übereinstimmen. Diese Zeilen soll dann in Datei geschrieben werden, deren Endung sich in .txt ändern soll. Mit dem zweiten Teil des Scripts bin ich ganz gut gefahren, musste jedoch immer den Namen der Quelldatei eingeben, das ist bei ca. 15 Dateien pro Ordner und 25 Ordnern (x 10 Jahrgängen) doch ziemlich aufwendig. Also habe ich diesen Teil an ein vorhandenes Script angefügt und angepasst. Aber ich bekomme bei Zeile 39 den Fehler: ungültiger Dateimodus. Was mache ich falsch ?
Ein zweites Problem besteht innerhalb des Tags Problemzone darin, dass ich gern die nachfolgende Zeile(n) ausgelesen haben möchte, wie baut man einen Zeilenzähler ein..
Über eine konkrete Antwort würde ich mich als VBS-Neuling sehr freuen.
Vielen Danke !
Micha
Visual Basic-Quellcode
- Dim objFso, strFolder
- ' Beginn des Hauptprogamms
- Set objFso = CreateObject("Scripting.FileSystemObject")
- strFolder = objFso.GetParentFolderName(WScript.ScriptFullName)
- If objFso.FolderExists(strFolder) Then
- Call GetDOKFiles(objFso.GetFolder(strFolder))
- End If
- Set objFso = Nothing
- ' End des Hauoptprogramms
- Sub GetDOKFiles(ByRef objFolder)
- Dim objFile, objSubFolder
- For Each objFile In objFolder.Files
- If LCase(objFso.GetExtensionName(objFile.Name)) = "dok" Then
- Call DOKinTXT(objFile.Path, objFolder.Path)
- End If
- Next
- For Each objSubFolder In objFolder.SubFolders
- Call GetDOKFiles(objSubFolder)
- Next
- End Sub
- Sub DOKinTXT(ByRef strPath, ByRef strFolder)
- Dim arrText, strText, strTextLine, strTXTPath, objDOKFile, objTXTFile
- strTXTPath = objFso.BuildPath(strFolder, objFso.GetBaseName(strPath) & ".txt")
- Set objDOKFile = objFso.OpenTextFile(strPath)
- Set objTXTFile = objFso.CreateTextFile(strTXTPath) ' objTXTFile
- Do Until objTXTFile.AtEndOfStream ' => FEHLER: ungültiger Dateimodus
- ' Zeile für Zeile aus der Quelldatei lesen
- strLine = objTXTFile.ReadLine
- ' Das exakte Suchwort in der Zeile finden
- If Instr(1, strLine, "Gemeindestatistik 20", 1) > 0 Then
- ' Die gesamte Zeile in die Ausgabedatei schreiben
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "(Amtlicher", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "rungsfortschreibung auf Basis", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(8, strLine, "Gebiet und Bevölkerung", 1) > 0 Then
- objTXTFile.WriteLine vbcrlf & "GEBIET UND BEVÖLKERUNG" & vbcrlf & "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" & vbcrlf
- End If
- If Instr(1, strLine, "in qkm", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "am 03.10.1990 insgesamt", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "davon männlich", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "davon weiblich", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "je qkm am 31.12.", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "nder am 31.12.2", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "Bevölkerung am 31.12.2", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "unter 3 Jahre", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "bis unter", 1) AND NOT Instr(1, strLine, "von 10 bis unter", 1)> 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "Jahre und mehr", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, " Bevölkerungsbewegung", 1) > 2 Then
- objTXTFile.WriteLine vbcrlf & "BEVÖLKERUNGSBEWEGUNG" & vbcrlf & "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
- End If
- If Instr(1, strLine, "Lebendgeborene ", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, " Gestorbene", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- ' --------- Beginn Problemzone
- If Instr(1, strLine, "berschuss Lebendgeborene bzw", 1) > 0 Then
- ' die nächste Zeile muss geschrieben werden !!!
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "ber die Gebietsgrenze", 1) > 0 Then
- ' zwei Zeilen, nur die erste wird geschrieben !
- objTXTFile.WriteLine strLine
- End If
- '------------ Ende Problemzone
- If Instr(1, strLine, "berschuss Zu- bzw. Fort", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- If Instr(1, strLine, "nderung 2", 1) > 0 Then
- objTXTFile.WriteLine strLine
- End If
- Loop
- objDOKFile.Close
- objTXTFile.Close
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sachsenbauch“ ()