Ricerca di modifiche tramite editor (Microsoft Word)
L’abbonato Doris Bell ha chiesto se esisteva un modo, in Word 2000, per individuare tutte le modifiche apportate da un particolare editor in un documento in cui è attivato Revisioni. La risposta rapida, ovviamente, sarebbe l’aggiornamento a Word 2002, poiché questa funzionalità è disponibile direttamente dalla barra degli strumenti Revisione.
Word 97 e Word 2000, tuttavia, sono una storia diversa: qui hai solo la possibilità di visualizzare o non visualizzare tutte le modifiche rilevate. Se lo desideri, puoi ovviare alla carenza creando macro che ti consentano di cercare le modifiche da un editor specifico. Inizia creando un modulo utente nell’editor VBA, seguendo questi passaggi generali:
-
Visualizza l’editor VBA premendo Alt + F11.
-
Scegli UserForm dal menu Inserisci. Nell’editor viene visualizzato un modulo utente vuoto.
-
Utilizzando la Casella degli strumenti, posizionare un controllo Etichetta nel modulo, vicino al lato sinistro del modulo.
-
Nelle Proprietà per il controllo Etichetta appena posizionato, modificare la proprietà Caption in “Autore” (senza virgolette).
-
Utilizzando la casella degli strumenti, posizionare un controllo ComboBox appena a destra dell’etichetta inserita nel passaggio 3.
-
Nelle proprietà per il controllo ComboBox, modificare la proprietà Name in “cboAuthor” (senza virgolette).
-
Utilizzando la casella degli strumenti, posizionare un controllo CommandButton nel form. Può essere lungo il bordo inferiore del modulo o sul bordo destro; Spetta a voi.
-
Nelle Proprietà per il controllo CommandButton, modificare la proprietà Name in “cmdFindNext” (senza virgolette).
-
Nelle Proprietà per il controllo CommandButton, modificare la proprietà Caption su “Trova” (senza virgolette).
-
Utilizzando la casella degli strumenti, inserire un altro controllo CommandButton nel form.
Ciò dovrebbe essere appena a destra dell’altro controllo CommandButton o appena sotto esso.
-
Nelle Proprietà per il controllo CommandButton, modificare la proprietà Name in “cmdExit” (senza virgolette).
-
Nelle Proprietà per il controllo CommandButton, modificare la proprietà Caption a “Exit” (senza virgolette).
-
Ridimensiona il tuo modulo generale per l’aspetto desiderato.
Il tuo modulo è ora completo e tutto ciò che devi fare è aggiungere il codice di programmazione che sfrutterà questi controlli. Assicurati di selezionare l’intero modulo e quindi premere F7 per visualizzare la finestra del codice. Se è già presente del codice (VBA potrebbe fornire un codice predefinito per te), sentiti libero di eliminarlo. Quindi, inserisci il seguente codice nella finestra del codice:
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
Quando in seguito esegui il tuo nuovo modulo utente, ti viene presentato un modo per selezionare gli editor e trovare la modifica successiva effettuata da quell’editor. Ciò consente di trovare una modifica alla volta, non di visualizzare tutte le modifiche di un particolare editor (come è possibile in Word 2002).
C’è un approccio diverso che puoi adottare. È possibile utilizzare una macro per “estrarre” tutte le modifiche effettuate in un documento e disporle per editor in un nuovo documento. La seguente macro mostra come puoi fare questo genere di cose. La tabella risultante indica anche il tipo di modifica eseguita nel documento originale.
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
Per ogni revisione in un documento, questa macro troverà l’autore, il tipo e il testo della revisione (se presente). La macro posizionerà quindi tutte le revisioni in una tabella, ordinerà la tabella in base al nome dell’autore e inserirà una piccola legenda che descrive ogni tipo di revisione.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (1303) si applica a Microsoft Word 97, 2000 e 2002.