Búsqueda de cambios por editor (Microsoft Word)
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:
-
Muestre el Editor de VBA presionando Alt + F11.
-
Elija UserForm en el menú Insertar. Se muestra un formulario de usuario en blanco en el editor.
-
Con el Cuadro de herramientas, coloque un control Etiqueta en el formulario, cerca del lado izquierdo del formulario.
-
En las Propiedades del control Etiqueta recién colocado, cambie la propiedad Título a «Autor» (sin las comillas).
-
Usando la Caja de herramientas, coloque un control ComboBox justo a la derecha de la etiqueta que colocó en el paso 3.
-
En las Propiedades del control ComboBox, cambie la propiedad Name a «cboAuthor» (sin las comillas).
-
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.
-
En las Propiedades del control CommandButton, cambie la propiedad Name a «cmdFindNext» (sin las comillas).
-
En las Propiedades del control CommandButton, cambie la propiedad Caption a «Buscar» (sin las comillas).
-
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.
-
En las Propiedades del control CommandButton, cambie la propiedad Nombre a «cmdSalir» (sin las comillas).
-
En las Propiedades del control CommandButton, cambie la propiedad Caption a «Salir» (sin las comillas).
-
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.