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.
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
ist die dritte Zeile natürlich überflüssig.
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
- Dim z As Integer
- Dim ok As Boolean
- z = 1
- ok = True
- Do While ok = True
- ActiveDocument.Sections(1).Range.Characters(1).Select
- Selection.Find.ClearFormatting
- Selection.Find.Replacement.ClearFormatting
- With Selection.Find
- .Text = "[*]"
- .Replacement.Text = "[" + CStr(z) + "]"
- .Forward = True
- .Wrap = wdFindContinue
- .Format = False
- .MatchCase = False
- .MatchWholeWord = False
- .MatchWildcards = False
- .MatchSoundsLike = False
- .MatchAllWordForms = False
- End With
- If Selection.Find.Execute = True Then
- Selection.Find.Execute
- With Selection
- If .Find.Forward = True Then
- .Collapse Direction:=wdCollapseStart
- Else
- .Collapse Direction:=wdCollapseEnd
- End If
- .Find.Execute Replace:=wdReplaceOne
- If .Find.Forward = True Then
- .Collapse Direction:=wdCollapseEnd
- Else
- .Collapse Direction:=wdCollapseStart
- End If
- .Find.Execute
- End With
- Else
- ok = False
- End If
- z = z + 1
- 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
ist die dritte Zeile natürlich überflüssig.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „KronSii“ ()