mehrere Zeilen einer Textdatei löschen

  • Word

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

    mehrere Zeilen einer Textdatei löschen

    Hi,

    folgendes:

    Ich habe eine Logdatei, die ich mit Hilfe von Word Makros bearbeiten möchte. Es sollen

    1. alle leeren Zeilen gelöscht werden

    Das habe ich folgendermaßen gelöst

    Quellcode

    1. 'Prüfen ob es eine Leerzeile ist
    2. If Len(Trim(Zeile.Text)) = 0 Then
    3. SchlechteZeile = True
    4. Exit Function

    außerdem lasse ich noch Zeilen mit bestimmten Wörtern löschen.

    Quellcode

    1. 'Prüfen ob "INTERRUPTION TEXT JOB" vorkommt
    2. If InStr(Zeile.Text, "INTERRUPTION TEXT JOB") Then
    3. SchlechteZeile = True
    4. Exit Function

    2. nach einem bestimmten Wort immer die 6 darauffolgenden Zeilen gelöscht werden.
    Keine Ahnung wie das funktionieren könnte, da ich die 6 Zeilen nicht wie oben gelöst einzeln ansprechen kann.

    3. bei einer Zeile mit einem bestimmten Wort drüber und drunter eine Leerzeile angelegt werden.


    Ich muss dazu sagen dass heute der erste Tag ist wo ich mich mit VB auseinander setze. Hab auch schon recht viel gegooglt, aber nix passendes gefunden.

    Danke schonmal!
    entweder aus SchlechteZeile ein Array machen wo du dann jede zeile extra bewerten kannst, oder du schreibst gleichzeitig eine neue Logdatei wo die schlechten Zeilen halt fehlen, wo du dann auch bei bestimmten zeichen 6 Zeilen ignorieren/löschen kannst
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hi,

    bin jetzt so weit...aber ich finde den Fehler nicht! Beim Kompilieren beschwert er sich an 2 Stellen...


    Visual Basic-Quellcode

    1. Sub Start()
    2. Dim Zeilen As Collection
    3. Dim Dateiname As String
    4. 'Dateinamen organisieren
    5. Dateiname = ErfrageDateinamen
    6. 'Prüfen ob es einen Namen gibt
    7. If Dateiname = "" Then
    8. Exit Sub
    9. End If
    10. 'Eine Kollektion der Zeilen holen
    11. Set Zeilen = LeseDateiUni(Dateiname)
    12. 'geänderten Inhalt in Datei speichern
    13. SchreibeDatei Dateiname, Zeilen
    14. MsgBox "Fertig!!!", vbInformation
    15. End Sub
    16. Function ErfrageDateinamen() As String
    17. 'Mit Datei-Öffnen-Dialog anzeigen
    18. With Application.FileDialog(msoFileDialogOpen)
    19. '...anzeigen
    20. If .Show Then
    21. 'Ausgewählte Datei ermitteln und zurückgeben
    22. ErfrageDateinamen = .SelectedItems(1)
    23. End If
    24. End With
    25. End Function
    26. Function LeseDateiUni(Name As String) As Collection '<------------------------ hier
    27. 'Zugriff auf Dateinsystem mit Unicode
    28. Dim fso As New FileSystemObject
    29. Dim Text As Scripting.TextStream
    30. Dim Zeilen As New Collection
    31. Dim Zeile As String
    32. Set Text = fso.OpenTextFile(Name, , , TristateMixed)
    33. Do Until Text.AtEndOfStream
    34. 'Hier gehts los
    35. Zeile = Text.ReadLine()
    36. If (Len(Trim(Zeile)) > 0) And Not (Instr(Zeile, "INTERRUPTION TEXT JOB") > 0) Then
    37. ' Nächsten 6 zeilen überspringen
    38. If Instr(Zeile, "text1") > 0 Then
    39. Zeile = Zeile & vbCrLf
    40. For i = 0 To 5
    41. Text.SkipLine() '<---------------------------------------------------------
    42. Next
    43. ' Eine Leerzeile davor und dannach einfügen
    44. Elseif Instr(Zeile, "text2") > 0 Then
    45. Zeile = vbcrlf & Zeile & vbcrlf & vbcrlf
    46. ' Usw.
    47. Else
    48. Zeile = Zeile & vbcrlf
    49. End If
    50. End If
    51. Zeilen.Add Zeile
    52. Loop
    53. Text.Close
    54. Set LeseDateiUni = Zeilen
    55. End Function
    56. Sub SchreibeDatei(ByVal Dateiname As String, Zeilen As Collection)
    57. Dim Zeile As KlasseZeile
    58. Dim Dateinummer As Integer
    59. 'Dateinamen für Ausgabe verändern
    60. Dateiname = ZielDateiname(Dateiname)
    61. 'Freie Dateinummer ermitteln
    62. Dateinummer = FreeFile
    63. 'Öffnen der Datei zum Schreiben
    64. Open Dateiname For Output As Dateinummer
    65. 'in einer Schleife durch alle Zeilen
    66. For Each Zeile In Zeilen
    67. 'Prüfen, ob Zeile geschrieben werden muss
    68. If Not Zeile.Gelöscht Then
    69. 'Zeile in die Datei schreiben
    70. Print #Dateinummer, Zeile.Text
    71. End If
    72. Next
    73. Close Dateinummer
    74. End Sub




    Wie kann ich das berichtigen??

    Edit by LaMa5: VB Tag eingefügt

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

    Hallo bool,

    bitte so:

    Visual Basic-Quellcode

    1. For i = 0 To 5
    2. Text.SkipLine
    3. Next i


    der andere Fehler ist mir nicht klar. Ohne lauffähigen Quelltext von dir, mag ich auch nicht weiter suchen.
    Im obigen Fall hätte es gereicht, die Methode zu markieren und die F1-Taste zu drücken. Nebenbei empfehle ich dir immer Option Explicit zu verwenden.

    Gruß Markus

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