Mientras analiza sus documentos, es posible que se pregunte si existe una forma de crear una lista de frecuencia de palabras. En otras palabras, es posible que desee generar una lista de cada palabra única en su documento, junto con la cantidad de veces que aparece.

Desafortunadamente, Word no incluye tal característica. Sin embargo, puede crear el suyo propio utilizando una macro. La siguiente macro de VBA es un ejemplo:

Sub WordFrequency()

Dim SingleWord As String           'Raw word pulled from doc     Const maxwords = 9000              'Maximum unique words allowed     Dim Words(maxwords) As String      'Array to hold unique words     Dim Freq(maxwords) As Integer      'Frequency counter for unique words     Dim WordNum As Integer             'Number of unique words     Dim ByFreq As Boolean              'Flag for sorting order     Dim ttlwds As Long                 'Total words in the document     Dim Excludes As String             'Words to be excluded     Dim Found As Boolean               'Temporary flag     Dim j As Integer                   'Temporary variables     Dim k As Integer                   '     Dim l As Integer                   '     Dim Temp As Integer                '     Dim tword As String                '

' Set up excluded words     Excludes = "[the][a][of][is][to][for][this][that][by][be][and][are]"



' Find out how to sort     ByFreq = True     ans = InputBox$("Sort by WORD or by FREQ?", "Sort order", "WORD")

If ans = "" Then End     If UCase(ans) = "WORD" Then         ByFreq = False     End If          Selection.HomeKey Unit:=wdStory     System.Cursor = wdCursorWait     WordNum = 0     ttlwds = ActiveDocument.Words.Count

' Control the repeat     For Each aword In ActiveDocument.Words         SingleWord = Trim(LCase(aword))

If SingleWord < "a" Or SingleWord > "z" Then SingleWord = ""    'Out of range?

If InStr(Excludes, "[" & SingleWord & "]") Then SingleWord = "" 'On exclude list?

If Len(SingleWord) > 0 Then             Found = False             For j = 1 To WordNum                 If Words(j) = SingleWord Then                     Freq(j) = Freq(j) + 1                     Found = True                     Exit For                 End If             Next j             If Not Found Then                 WordNum = WordNum + 1                 Words(WordNum) = SingleWord                 Freq(WordNum) = 1             End If             If WordNum > maxwords - 1 Then                 j = MsgBox("The maximum array size has been exceeded. _                   Increase maxwords.", vbOKOnly)

Exit For             End If         End If         ttlwds = ttlwds - 1         StatusBar = "Remaining: " & ttlwds & "     Unique: " & WordNum     Next aword

' Now sort it into word order     For j = 1 To WordNum - 1         k = j         For l = j + 1 To WordNum             If (Not ByFreq And Words(l) < Words(k)) Or                 (ByFreq And Freq(l) > Freq(k)) Then k = l         Next l         If k <> j Then             tword = Words(j)

Words(j) = Words(k)

Words(k) = tword             Temp = Freq(j)

Freq(j) = Freq(k)

Freq(k) = Temp         End If         StatusBar = "Sorting: " & WordNum - j     Next j

' Now write out the results     tmpName = ActiveDocument.AttachedTemplate.FullName     Documents.Add Template:=tmpName, NewTemplate:=False     Selection.ParagraphFormat.TabStops.ClearAll     With Selection         For j = 1 To WordNum             .TypeText Text:=Trim(Str(Freq(j))) & vbTab & Words(j) & vbCrLf         Next j     End With     System.Cursor = wdCursorNormal     j = MsgBox("There were " & Trim(Str(WordNum)) & _         " different words ", vbOKOnly, "Finished")

End Sub

Cuando abre un documento y ejecuta esta macro, se le pregunta si desea crear una lista ordenada por palabra o por frecuencia. Si elige palabra, la lista resultante se muestra en orden alfabético. Si elige la frecuencia, la lista resultante estará en orden descendente según la cantidad de veces que apareció la palabra en el documento.

Mientras se ejecuta la macro, la barra de estado indica lo que está sucediendo.

Según el tamaño de su documento y la velocidad de su computadora, la macro puede tardar un poco en completarse. (Lo ejecuté con un documento de 719 páginas con más de 349.000 palabras y tardé unos cinco minutos en completarlo).

Tenga en cuenta que hay una línea en la macro que establece un valor en la cadena Excluye. Esta cadena contiene palabras que la macro ignorará al armar la lista de palabras. Si desea agregar palabras a la lista, simplemente agréguelas a la cadena, entre [corchetes]. Además, asegúrese de que las palabras de exclusión estén en minúsculas.

_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 (879) se aplica a Microsoft Word 97, 2000, 2002 y 2003.