Hi,
ich habe mir eine Routine geschrieben, die alle Format-Revisions in einem Word-Doc annimmt (Code siehe unten). Sie funktioniert zwar, läuft aber extrem lange.
In einem Testdokument habe ich 392 Revisions, davon etliche Format-Revisions. Wenn ich die Schleifendurchläufe nun mitzähle stelle ich fest, dass die Schleife mehrere 1000 mal durchlaufen wird, wobei sich das letzte Element anscheinend wiederholt.
Ich habe es auch schon versucht, die Schleife abzubrechen, wenn mehr Durchläufe als Revision stattgefunden haben, dann findet die Routine aber nicht alle Format-Revisions. Wenn ich die revisions numerisch statt mit for each anspreche, läuft der Code noch viel langsamer.
Elemente größer Anzahl, also z.B. (im Direktbereich)
führen (wie sich das gehört zu einem Fehler.
Kann mir jemand helfen, das zu verstehen?
Vielen Dank!!!
ich habe mir eine Routine geschrieben, die alle Format-Revisions in einem Word-Doc annimmt (Code siehe unten). Sie funktioniert zwar, läuft aber extrem lange.
In einem Testdokument habe ich 392 Revisions, davon etliche Format-Revisions. Wenn ich die Schleifendurchläufe nun mitzähle stelle ich fest, dass die Schleife mehrere 1000 mal durchlaufen wird, wobei sich das letzte Element anscheinend wiederholt.
Ich habe es auch schon versucht, die Schleife abzubrechen, wenn mehr Durchläufe als Revision stattgefunden haben, dann findet die Routine aber nicht alle Format-Revisions. Wenn ich die revisions numerisch statt mit for each anspreche, läuft der Code noch viel langsamer.
Elemente größer Anzahl, also z.B. (im Direktbereich)
führen (wie sich das gehört zu einem Fehler.
Kann mir jemand helfen, das zu verstehen?
Vielen Dank!!!
Quellcode
- Public Sub AcceptAllFormatChanges()
- Dim oDoc As Document
- Dim oRevision As Revision
- Dim count As Long: count = 0
- Set oDoc = ActiveDocument
- If oDoc.Revisions.count = 0 Then MsgBox "The active document contains no tracked changes.", vbOKOnly: Exit Sub
- On Error GoTo Errhandler
- Application.ScreenUpdating = False
- Dim t As Long
- 'Get info from each tracked change (insertion/deletion) from oDoc and insert in table
- With oDoc
- For Each oRevision In oDoc.Revisions
- t = oRevision.Type
- If t = 3 Or t = 10 Then oRevision.Accept: count = count + 1
- Next oRevision
- End With
- Application.ScreenUpdating = True
- MsgBox count & " format revisions have been accepted."
- Exit Sub
- Errhandler:
- Application.ScreenUpdating = True
- End Sub