Isao si chiede se esiste un modo per costruire facilmente un elenco di tutte le parole uniche in un documento. Non ha bisogno di sapere quante volte ogni parola appare; ha solo bisogno dell’elenco di parole uniche. Inoltre, le variazioni in maiuscolo e minuscolo sulla stessa parola dovrebbero contare come la stessa parola.

Non esiste una funzione o uno strumento di Word incorporata per farlo. Tuttavia, in VBA puoi accedere alla raccolta Words, che include tutte le parole nel documento. Tenendo presente questo, è possibile creare una macro che compila un elenco ordinato di parole univoche nel documento e quindi aggiunge quelle parole alla fine 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

Si noti che ogni parola nel documento viene estratta, convertita in minuscolo e quindi aggiunta alla raccolta wList, in ordine ordinato.

Le parole vengono aggiunte solo se sono alfabetiche (quindi, i numeri sono esclusi, così come la punteggiatura) e la macro non presta attenzione al caso delle parole. Dovresti anche essere consapevole del fatto che la macro guarda solo le parole nel corpo principale del documento. Non include parole in posizioni come intestazioni, piè di pagina, caselle di testo o forme.

La macro potrebbe essere facilmente modificata per consentire diverse esigenze. Ad esempio, potresti fare in modo che la macro incolli l’elenco di parole in un documento separato invece che alla fine del documento corrente. Tutto quello che devi fare è inserire questa riga prima della riga di uscita mostrata per seconda qui:

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

Notare che c’era solo una modifica sostanziale nella macro: l’aggiunta del metodo “Documents.Add” per creare il nuovo documento per il riepilogo.

Per qualche altra idea su come estrarre parole da un documento, comprese le macro che contano la frequenza delle parole, potresti fare riferimento a questo suggerimento:

_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 (7697) si applica a Microsoft Word 2007, 2010, 2013 e 2016.