Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

macro trova parole ripetute in un doc Opzioni
merumeni
Inviato: Friday, May 29, 2009 8:18:31 PM
Rank: Member

Iscritto dal : 8/24/2004
Posts: 13
Angel Ciao a tutti.
La domanda non è certo originale...Qualcuno sa dirmi se esiste una macro che permetta di individuare in un testo delle parole ripetute? Lanciando la macro, le parole ripetute dovrebbero essere evidenziate in qualche modo.
P.s. Non mi seve un :" trova ... e evidenzia" o altro. Si suppone che chi cerca non sappia se una parola sia stata ripetuta o meno nel testo.
grazie
Sponsor
Inviato: Friday, May 29, 2009 8:18:31 PM

 
lui49
Inviato: Friday, May 29, 2009 8:31:40 PM
Rank: AiutAmico

Iscritto dal : 5/4/2003
Posts: 2,845
http://support.microsoft.com/kb/182304/it

aggiustando un pò la macro (a10n11 è bravissiomo) dovrebbe servire al caso tuo..
a10n11
Inviato: Saturday, May 30, 2009 6:44:32 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
se devi fare una ricerca senza filtro di tutte le parole ricorrenti, di un documento piccolo o grande che sia ti troveresti evidenziate una marea di parole. (pensa agli articoli, preposizioni, e chi più ne ha più ne metta)
Se le parole da cercare hanno un riferimento comune la cosa diventerebbe più facilmente gestibile.
Ad esempio creare una tabella che indichi la frequenza delle parole nel documento.
saluti
Andrea

a10n11
Inviato: Monday, June 01, 2009 10:38:11 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
Riadattando e semplificando una macro esistente, questo che segue è il risultato:
Sub ParoleRipetute()
Dim Parola As String
Dim Parole(10000) As String
Dim NrParole As Integer
Dim Esclusioni As String
Dim Trovato As Boolean
Dim n As Integer
Esclusioni = "il,lo,la,le,i,gli,un,uno,una,di,a,da,in,con,su,per,tra,fra,del,della,dello,se,ho,ha,è"
Selection.HomeKey Unit:=wdStory
System.Cursor = wdCursorWait
NrParole = 0
For Each AW In ActiveDocument.Words
Parola = Trim(AW)
If Parola < "A" Or Parola > "z" Then Parola = ""
If InStr(Esclusioni, Parola) Then Parola = ""
If Len(Parola) > 0 Then
Trovato = False
For n = 1 To NrParole
If Parole(n) = Parola Then
Trovato = True
AW.Font.ColorIndex = 6
Exit For
End If
Next n
If Not Trovato Then
NrParole = NrParole + 1
Parole(NrParole) = Parola
End If
End If
Next AW
End Sub

Come puoi vedere, ti ho messo come esclusi dalla ricerca (articoli,preposizioni, ed alcuni verbi di uso comune)
puoi estendere la lista come vuoi mantenendo la sintassi della riga della macro. Ho anche considerato un valore massimo di parole del documento (10000) cambialo come ti pare. Le parole ripetute verranno contrassegnate con il carattere rosso.
saluti
Andrea



merumeni
Inviato: Saturday, June 06, 2009 4:45:24 PM
Rank: Member

Iscritto dal : 8/24/2004
Posts: 13
chiedo scusa per il lungo ritardo!!!
Ho avuto solo oggi la possibilità di riconnetermi al sito.
Vi ringrazio.
Andrea, ho provato immediatamente ad usare il tuo codice.Ho operato in questo modo .
da word strumenti/macro/visualbasic/this document
...ed ho ho incollato il codice nella finestra a destra
Ho salvato ildocumento
Da word ho lanciato la macro ….
Il cursore si colloca a lato della prima parola del documento.


Ho provato ad inserire il codice in Moduli>new macros
Appare un piccolo box
“Errore di compilazione variabile non definita” e il debug mi evidenzia la variabile (?) aW dell’istruzione
For each AW In activedocument.word

Sbaglio qualcosa?
Mi fai veramente un grossissimo favore se riesci a risolvere il problema.
a10n11
Inviato: Monday, June 08, 2009 9:49:23 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
hai fatto un copia e incolla oppure hai riscritto completamente la macro??
La procedura corretta sarebbe questa:
Alt+F11 per accedere all'editor di vba
Menu Strumenti> Inserisci Modulo
Incolla tutto il codice nella pagina bianca che si è aperta sulla sinistra.
Alt+F11 per tornare al documento.
In ogni caso non andava scritta nel modulo "ThisDocument"
Cancella tutta la macro che hai inserito in thisDocument, Se il modulo "NewMacros contiene solo questa macro, elimina completamente il modulo ed inserisci come detto sopra un modulo standard.
La macro funziona senza problemi.
saluti
Andrea


Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.