Suchen und Ersetzen in falscher Reihenfolge

  • Word

    Suchen und Ersetzen in falscher Reihenfolge

    Hallo,

    ich bin gerade dabei eine 'Suchen und Ersetzen'-Funktion zu schreiben und dabei stoße ich auf ein Problem.
    Zum Hintergrund:
    Ich kopiere aus einer, oder mehreren, Word Datei(en) mehrere Zeilen und füge diese in mein Dokument ein.
    So eine Datei kann z.B. so aussehen:

    [*] a
    [*] b
    [*] c
    [*] d

    Da es nun sein kann, dass ich mehrere solcher Dateien kopieren muss, muss anschließend auch die Nummerierung korrekt sein, d.h. später soll es so aussehen:

    [1] a
    [2] b
    [3] c
    [4] d
    [5] e
    [6] f

    Ich möchte also die * durch Zahlen ersetzen.
    Dazu habe ich folgen Quellcode erstellt.

    Visual Basic-Quellcode

    1. Dim z As Integer
    2. Dim ok As Boolean
    3. z = 1
    4. ok = True
    5. Do While ok = True
    6. ActiveDocument.Sections(1).Range.Characters(1).Select
    7. Selection.Find.ClearFormatting
    8. Selection.Find.Replacement.ClearFormatting
    9. With Selection.Find
    10. .Text = "[*]"
    11. .Replacement.Text = "[" + CStr(z) + "]"
    12. .Forward = True
    13. .Wrap = wdFindContinue
    14. .Format = False
    15. .MatchCase = False
    16. .MatchWholeWord = False
    17. .MatchWildcards = False
    18. .MatchSoundsLike = False
    19. .MatchAllWordForms = False
    20. End With
    21. If Selection.Find.Execute = True Then
    22. Selection.Find.Execute
    23. With Selection
    24. If .Find.Forward = True Then
    25. .Collapse Direction:=wdCollapseStart
    26. Else
    27. .Collapse Direction:=wdCollapseEnd
    28. End If
    29. .Find.Execute Replace:=wdReplaceOne
    30. If .Find.Forward = True Then
    31. .Collapse Direction:=wdCollapseEnd
    32. Else
    33. .Collapse Direction:=wdCollapseStart
    34. End If
    35. .Find.Execute
    36. End With
    37. Else
    38. ok = False
    39. End If
    40. z = z + 1
    41. Loop



    Als Ergebnis kommt das hier raus:

    [6] a
    [1] b
    [2] c
    [3] d
    [4] e
    [5] f

    Kann mir jemand sagen, warum das Programm immer mit der zweiten Zeile beginnt?

    Gruß
    KronSii

    Edit:
    Ok hat sich erledigt. Fehler selber gefunden.

    In den Zeilen

    Visual Basic-Quellcode

    1. ...
    2. If Selection.Find.Execute = True Then
    3. Selection.Find.Execute
    4. With Selection
    5. ...


    ist die dritte Zeile natürlich überflüssig.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „KronSii“ ()