Generación de una lista de palabras únicas (Microsoft Word)
Isao se pregunta si existe una manera de construir fácilmente una lista de todas las palabras únicas en un documento. No necesita saber cuántas veces aparece cada palabra; solo necesita la lista de palabras únicas. Además, las variaciones en mayúsculas y minúsculas de la misma palabra deben contar como la misma palabra.
No hay una función o herramienta de Word incorporada para hacer esto. Sin embargo, en VBA puede acceder a la colección de Palabras, que incluye todas las palabras del documento. Con esto en mente, puede crear una macro que construya una lista ordenada de palabras únicas en el documento y luego agregue esas palabras al final del documento.
Sub UniqueWordList() Dim wList As New Collection Dim wrd Dim chkwrd Dim sTemp As String Dim k As Long For Each wrd In ActiveDocument.Range.Words sTemp = Trim(LCase(wrd)) If sTemp >= "a" And sTemp <= "z" Then k = 0 For Each chkwrd In wList k = k + 1 If chkwrd = sTemp Then GoTo nw If chkwrd > sTemp Then wList.Add Item:=sTemp, Before:=k GoTo nw End If Next chkwrd wList.Add Item:=sTemp End If nw: Next wrd sTemp = "There are " & ActiveDocument.Range.Words.Count & " words " sTemp = sTemp & "in the document, before this summary, but there " sTemp = sTemp & "are only " & wList.Count & " unique words." ActiveDocument.Range.Select Selection.Collapse Direction:=wdCollapseEnd Selection.TypeText vbCrLf & sTemp & vbCrLf For Each chkwrd In wList Selection.TypeText chkwrd & vbCrLf Next chkwrd End Sub
Tenga en cuenta que cada palabra del documento se extrae, se convierte a minúscula y luego se agrega a la colección wList, en orden ordenado.
Las palabras solo se agregan si son alfabéticas (por lo tanto, se excluyen los números, al igual que la puntuación), y la macro no presta atención al caso de las palabras. También debe tener en cuenta que la macro solo examina las palabras del cuerpo principal del documento. No incluye palabras en lugares como encabezados, pies de página, cuadros de texto o formas.
La macro podría cambiarse fácilmente para permitir diferentes necesidades. Por ejemplo, puede hacer que la macro pegue la lista de palabras en un documento separado en lugar de al final del documento actual. Todo lo que necesita hacer es insertar esta línea antes de la línea de salida que se muestra en segundo lugar aquí:
sTemp = "There are " & ActiveDocument.Range.Words.Count & " words " sTemp = sTemp & "in " & ActiveDocument.Name & ", but there " sTemp = sTemp & "are only " & wList.Count & " unique words." Documents.Add ActiveDocument.Range.Select Selection.Collapse Direction:=wdCollapseEnd Selection.TypeText vbCrLf & sTemp & vbCrLf For Each chkwrd In wList Selection.TypeText chkwrd & vbCrLf Next chkwrd End Sub
Tenga en cuenta que solo hubo un cambio sustancial en la macro: la adición del método «Documents.Add» para crear el nuevo documento para el resumen.
Para otras ideas sobre cómo sacar palabras de un documento, incluidas las macros que cuentan la frecuencia de las palabras, puede consultar este consejo:
link: / wordribbon-Generating_a_Count_of_Word_Occurrences [Generando un recuento de apariciones de palabras]
.
_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 (7697) se aplica a Microsoft Word 2007, 2010, 2013 y 2016.