Ho capito che non sei uno speculatore nonostante il nickname che ti sei scelto, quindi la donazione non e' obbligatoria...
A scopo dimostrativo guarda questo file Word:
https://www.dropbox.com/s/nr2pp5aq4f3eq ... .docm?dl=0Contiene la macro Worder che e' in grado di esaminare le parole del documento e creare su un foglio excel il riepilogo delle parole e delle pagine in cui compaiono (una o piu' volte).
Ovviamente e' un indice "di parole", fa differenza tra singolare e plurale, maschile e femminile, non e' in grado di associare "Effetti collaterali", tantomeno di associarli all'Abacavir piuttosto che all'Abciximab.
Quindi non so che uso ne possa fare.
Il codice della macro:
- Codice: Seleziona tutto
Sub Worder()
Dim Cont As Boolean, wDict As Object, cWord As String, miLen As Long
Dim XLApp As Object, cPage
'
miLen = 3 '<<< Lunghezza minima delle parole da prendere in considerazione
'
Set wDict = CreateObject("Scripting.Dictionary")
wDict.comparemode = 1
Selection.HomeKey Unit:=wdStory
Do
If Not Cont Then
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=True: Cont = True
Else
Selection.Next(Unit:=wdWord, Count:=1).Select
End If
cPage = Selection.Information(wdActiveEndPageNumber)
cWord = Trim(Selection.Range.Text)
If Len(cWord) >= miLen Then
If wDict.Exists(cWord) Then
If InStr(1, wDict.Item(cWord), cPage & ",", vbTextCompare) = 0 Then
wDict.Item(cWord) = wDict.Item(cWord) & cPage & ","
End If
Else
wDict.Add (cWord), cPage & ","
End If
End If
If Selection.Type = 2 And Selection.End = ActiveDocument.Content.End Then Exit Do
DoEvents
Loop
If wDict.Count > 0 Then
Dim wKey, mySplit, iInd As Long
Set XLApp = CreateObject("Excel.Application")
XLApp.WindowState = -4143
XLApp.Visible = True
XLApp.workbooks.Add
For Each wKey In wDict.keys
iInd = iInd + 1
mySplit = Split(wDict.Item(wKey), ",", , vbTextCompare)
XLApp.sheets(1).Cells(iInd, 1) = wKey
XLApp.sheets(1).Cells(iInd, 2).Resize(1, 1 + UBound(mySplit)) = mySplit
DoEvents
Next wKey
End If
Set XLApp = Nothing
MsgBox ("Completato conteggio; salva il file e CHIUDI la sessione corrente di Excel")
End Sub
La riga marcata <<< puo' essere modificata per variare la lunghezza minima delle parole da prendere in considerazione.
Per modificare la macro, partendo dal documento da esaminare:
-premere Alt-F8, scegliere Worder dall'elenco delle macro disponibili, premere Modifica; si aprira' l'editor delle macro e si potra' modificare il codice.
Per eseguire la macro, partendo dal documento da esaminare:
-premere Alt-F8, scegliere Worder dall'elenco delle macro disponibili, premere Esegui
Essa lavora sul documento corrente; ne scansiona tutte le parole di cui crea un Dizionario con il numero di pagina.
Finita la scansione delle parole, crea una sessione excel con un nuovo workbook vuoto, in cui inserisce le parole e, nelle colonne adiacenti, il numero di pagina in cui la parola compare una o piu' volte. Il completamento del processo e' segnalato da un messaggio.
Il file excel va salvato a mano, e la sessione excel va chiusa (perche' creata appositamente per questo processo).
Spero ci sia qualche spunto interessante.
Ciao
Keyw:
Word automation word counter index