Generazione di un elenco di parole uniche (Microsoft Word)
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.