La suscriptora Doris Bell preguntó si había una forma, en Word 2000, de ubicar todos los cambios realizados por un editor en particular en un documento que tiene activado el Control de cambios. La respuesta rápida, por supuesto, sería actualizar a Word 2002, ya que esta capacidad está disponible directamente desde la barra de herramientas Revisión.

Word 97 y Word 2000, sin embargo, son una historia diferente: allí solo tiene la capacidad de ver o no ver todos los cambios registrados. Si lo desea, puede solucionar la deficiencia creando macros que le permitan buscar cambios mediante un editor específico. Comience creando un formulario de usuario en el Editor de VBA, siguiendo estos pasos generales:

  1. Muestre el Editor de VBA presionando Alt + F11.

  2. Elija UserForm en el menú Insertar. Se muestra un formulario de usuario en blanco en el editor.

  3. Con el Cuadro de herramientas, coloque un control Etiqueta en el formulario, cerca del lado izquierdo del formulario.

  4. En las Propiedades del control Etiqueta recién colocado, cambie la propiedad Título a «Autor» (sin las comillas).

  5. Usando la Caja de herramientas, coloque un control ComboBox justo a la derecha de la etiqueta que colocó en el paso 3.

  6. En las Propiedades del control ComboBox, cambie la propiedad Name a «cboAuthor» (sin las comillas).

  7. Con el Cuadro de herramientas, coloque un control CommandButton en el formulario. Esto puede estar a lo largo del borde inferior del formulario o en el borde derecho; es tu decision.

  8. En las Propiedades del control CommandButton, cambie la propiedad Name a «cmdFindNext» (sin las comillas).

  9. En las Propiedades del control CommandButton, cambie la propiedad Caption a «Buscar» (sin las comillas).

  10. Con el Cuadro de herramientas, coloque otro control CommandButton en el formulario.

Debe estar justo a la derecha del otro control CommandButton o justo debajo de él.

  1. En las Propiedades del control CommandButton, cambie la propiedad Nombre a «cmdSalir» (sin las comillas).

  2. En las Propiedades del control CommandButton, cambie la propiedad Caption a «Salir» (sin las comillas).

  3. Cambie el tamaño de su forma general para obtener la apariencia deseada.

Su formulario ahora está completo y todo lo que necesita hacer es agregar el código de programación que aprovechará estos controles. Asegúrese de seleccionar el formulario completo y luego presione F7 para mostrar la ventana Código. Si ya hay algún código allí (VBA puede proporcionarle algún código predeterminado), no dude en eliminarlo. Luego, coloque el siguiente código en la ventana Código:

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

Cuando más tarde ejecute su formulario de nuevo usuario, se le presentará una forma de seleccionar editores y encontrar la siguiente edición realizada por ese editor. Esto le permite encontrar una edición a la vez, no ver todas las ediciones de un editor en particular (como puede hacer en Word 2002).

Hay un enfoque diferente que puede adoptar. Puede utilizar una macro para «extraer» todas las ediciones realizadas en un documento y organizarlas por editor en un documento nuevo. La siguiente macro muestra cómo puede hacer este tipo de cosas. La tabla resultante incluso indica el tipo de edición realizada en el documento original.

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

Para cada revisión de un documento, esta macro encontrará el autor, el tipo y el texto de la revisión (si corresponde). Luego, la macro colocará todas las revisiones en una tabla, ordenará la tabla por el nombre del autor e insertará una pequeña leyenda que describe cada tipo de revisión.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (1303) se aplica a Microsoft Word 97, 2000 y 2002.