Suchen nach Änderungen nach Editor (Microsoft Word)
Die Abonnentin Doris Bell fragte, ob es in Word 2000 eine Möglichkeit gibt, alle von einem bestimmten Editor vorgenommenen Änderungen in einem Dokument zu finden, in dem Änderungen verfolgen aktiviert ist. Die schnelle Antwort wäre natürlich ein Upgrade auf Word 2002, da diese Funktion direkt in der Überprüfungssymbolleiste verfügbar ist.
Word 97 und Word 2000 sind jedoch eine andere Geschichte – dort können Sie nur alle nachverfolgten Änderungen anzeigen oder nicht anzeigen. Falls gewünscht, können Sie den Mangel beheben, indem Sie Makros erstellen, mit denen Sie nach Änderungen durch einen bestimmten Editor suchen können. Beginnen Sie mit dem Erstellen eines Benutzerformulars im VBA-Editor, indem Sie die folgenden allgemeinen Schritte ausführen:
-
Zeigen Sie den VBA-Editor an, indem Sie Alt + F11 drücken.
-
Wählen Sie UserForm aus dem Menü Einfügen. Im Editor wird ein leeres Benutzerformular angezeigt.
-
Platzieren Sie mithilfe der Toolbox ein Beschriftungssteuerelement im Formular nahe der linken Seite des Formulars.
-
Ändern Sie in den Eigenschaften für das neu platzierte Label-Steuerelement die Caption-Eigenschaft in „Author“ (ohne Anführungszeichen).
-
Platzieren Sie mithilfe der Toolbox ein ComboBox-Steuerelement rechts neben der Beschriftung, die Sie in Schritt 3 platziert haben.
-
Ändern Sie in den Eigenschaften für das ComboBox-Steuerelement die Name-Eigenschaft in „cboAuthor“ (ohne Anführungszeichen).
-
Platzieren Sie mithilfe der Toolbox ein CommandButton-Steuerelement im Formular. Dies kann am unteren Rand des Formulars oder am rechten Rand erfolgen. es liegt an dir.
-
Ändern Sie in den Eigenschaften für das CommandButton-Steuerelement die Name-Eigenschaft in „cmdFindNext“ (ohne Anführungszeichen).
-
Ändern Sie in den Eigenschaften für das CommandButton-Steuerelement die Caption-Eigenschaft in „Suchen“ (ohne Anführungszeichen).
-
Platzieren Sie mithilfe der Toolbox ein weiteres CommandButton-Steuerelement im Formular.
Dies sollte sich entweder rechts neben dem anderen CommandButton-Steuerelement oder direkt darunter befinden.
-
Ändern Sie in den Eigenschaften für das CommandButton-Steuerelement die Name-Eigenschaft in „cmdExit“ (ohne Anführungszeichen).
-
Ändern Sie in den Eigenschaften für das CommandButton-Steuerelement die Caption-Eigenschaft in „Exit“ (ohne Anführungszeichen).
-
Passen Sie die Größe Ihres Gesamtformulars an das gewünschte Erscheinungsbild an.
Ihr Formular ist jetzt vollständig und Sie müssen lediglich den Programmcode hinzufügen, der diese Steuerelemente nutzt. Stellen Sie sicher, dass Sie das gesamte Formular auswählen, und drücken Sie dann F7, um das Codefenster anzuzeigen. Wenn bereits Code vorhanden ist (VBA stellt möglicherweise einen Standardcode für Sie bereit), können Sie diesen jederzeit löschen. Fügen Sie dann den folgenden Code in das Codefenster ein:
Private Sub UserForm1_Initialize() Dim oRevision As Revision Dim bExists As Boolean bExists = False ' Go to beginning of document Selection.HomeKey Unit:=wdStory ' Loop through revisions and add authors For Each oRevision In ActiveDocument.Revisions If Me.cboAuthor.ListCount > 0 Then For i = 1 To Me.cboAuthor.ListCount If Me.cboAuthor.List(i - 1) = oRevision.Author Then bExists = True End If Next i ' If it doesn't already exist, add the author to list If Not bExists Then Me.cboAuthor.AddItem oRevision.Author End If bExists = False Else ' Add first Author to the list Me.cboAuthor.AddItem oRevision.Author End If Next oRevision End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdFindNext_Click() Dim iStart As Integer Dim iEnd As Integer Dim myRange As Range Dim iRevisions As Integer Dim iResponse As Integer Dim bAuthorFound As Boolean ' Collapse the Selection so that we don't include selected text Selection.Collapse wdCollapseEnd Selection.MoveRight wdCharacter, 2 ' Get the Range start and end positions iStart = Selection.Range.Start iEnd = ActiveDocument.Content.End Set myRange = ActiveDocument.Range(Start:=iStart, End:=iEnd) ' Count total number of revisions within range iRevisions = myRange.Revisions.Count If iRevisions > 0 Then ' Loop through all revisions in the range ' selecting first one found For i = 1 To iRevisions If myRange.Revisions(i).Author = Me.cboAuthor.Text Then myRange.Revisions(i).Range.Select bAuthorFound = True Exit For Else bAuthorFound = False End If Next i End If If Not bAuthorFound Then ' Ask if they would like to start from the beginning iResponse = MsgBox("Search from beginning?", vbYesNo, "Find Author") If iResponse = vbYes Then ' Go to top of document Selection.HomeKey Unit:=wdStory cmdFindNext_Click Else ' Exit Unload Me End If End If End Sub
Wenn Sie später Ihr neues Benutzerformular ausführen, wird Ihnen eine Möglichkeit angezeigt, Editoren auszuwählen und die nächste von diesem Editor vorgenommene Bearbeitung zu finden. Auf diese Weise können Sie jeweils eine Bearbeitung finden und nicht alle Änderungen eines bestimmten Editors anzeigen (wie in Word 2002).
Sie können einen anderen Ansatz wählen. Sie können ein Makro verwenden, um alle in einem Dokument vorgenommenen Änderungen zu „ziehen“ und sie nach Editor in einem neuen Dokument anzuordnen. Das folgende Makro zeigt, wie Sie so etwas tun können. Die resultierende Tabelle zeigt sogar die Art der Bearbeitung im Originaldokument an.
Option Explicit Private Sub ShowAuthorAndRevisions() Dim sRevision As String Dim oRev As Revision Dim oDoc As Document Dim oRng As Range For Each oRev In ActiveDocument.Revisions With oRev sRevision = sRevision & .Author & vbTab _ & .Type & vbTab & .Range.Text & vbCrLf End With Next oRev ' Open a new document Set oDoc = Documents.Add With oDoc .Range.InsertAfter sRevision ' Convert the revisions to a table .Range.ConvertToTable Separator:=wdSeparateByTabs With .Tables(1) ' Sort the table by the author (i.e., the first column) .Range.Sort ' Add a new row to the beginning of the table .Range.Rows.Add BeforeRow:=.Range.Rows(1) With .Rows(1) ' insert column descriptions .Cells(1).Range.Text = "Author" .Cells(2).Range.Text = "Revision Type" .Cells(3).Range.Text = "Revision" End With End With ' insert a paragraph mark above the table Selection.SplitTable ' Insert a legend to make reading the revision type easier .Range.InsertBefore "Revision Type Legend:" & vbCrLf & _ "No Revision = 0 " & vbCrLf & _ "Revision Insert = 1 " & vbCrLf & _ "Revision Delete = 2 " & vbCrLf & _ "Revision Property = 3 " & vbCrLf & _ "Revision Paragraph Number = 4 " & vbCrLf & _ "Revision Display Field = 5 " & vbCrLf & _ "Revision Reconcile = 6 " & vbCrLf & _ "Revision Conflict = 7 " & vbCrLf & _ "Revision Style = 8 " & vbCrLf & _ "Revision Replace = 9 " & vbCrLf End With End Sub
Für jede Revision in einem Dokument findet dieses Makro den Autor, den Typ und den Text der Revision (falls vorhanden). Das Makro platziert dann alle Revisionen in einer Tabelle, sortiert die Tabelle nach dem Namen des Autors und fügt eine kleine Legende ein, die jeden Revisionstyp beschreibt.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die beliebteste Textverarbeitungssoftware der Welt.) Dieser Tipp (1303) gilt für Microsoft Word 97, 2000 und 2002.