Condividi:        

Conteggio parole in track changes [revisioni]

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Conteggio parole in track changes [revisioni]

Postdi AleRosa » 10/11/16 19:34

Sera a tutti!
Mi chiedevo se ci fosse un modo di conteggiare i termini inseriti in track changes [revisioni] [vedere file caricato qui: http://www.filedropper.com/provatc] senza doverli contare uno per uno [cosa fattibile su un testo breve ma assolutamente da matti su testi molto lunghi :) ]
Grazie mille a tutti in anticipo!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Sponsor
 

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 11/11/16 01:13

Si puo' fare qualcosa analizzando le singole Revisioni all'interno della collezione delle Revisioni.
Ad esempio:
Codice: Seleziona tutto
Sub RevCounter()
Dim I As Long, delW As Long, addW As Long
'
With ActiveDocument
    For I = 1 To .Revisions.Count
        .Revisions(I).Range.Select
        If .Revisions(I).Type = wdRevisionDelete Then
            delW = delW + Selection.Range.Words.Count
        ElseIf .Revisions(I).Type = wdRevisionInsert Then
            addW = addW + Selection.Range.Words.Count
        ElseIf 3 < 2 Then
            Beep
        End If
     Next I
End With
MsgBox ("Totale revisioni: " & activedocument.Revisions.Count _
   & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub
Cosi' contiamo quante revisioni sono effettuate e quante parole sono state cancellate o aggiunte.

La macro va messa in un Modulo vba di Word, meglio se non appartenente al modello Normal (o al modello usato dal documento)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 11/11/16 09:42

Ciao Anthony, grazie mille!
Ti faccio sempre la solita domanda [quella che t'ho fatto nell'altro post]: come faccio a salvare questo "modulo"?
E, soprattutto, che vuol dire "Non appartenente al modello Normal"?
Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 11/11/16 10:42

Ciao Anthony,
ho provato ad inserire questo codice sempre in Modelli, ma avviando la macro mi esce fuori questo errore:
Errore di run-time 5852: l'oggetto richiesto non è disponibile.
Se faccio debug, mi evidenzia (nel codice) questo: .Revisions(I).Range.Select
Tra l'altro, come sarebbe il codice per poter conteggiare SEPARATAMENTE le parole inserite e quelle eliminate [con 2 macro distinte]?
Grazie mille e comunque... io lo dico a tutti oramai... siete davvero geniali!!! Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 11/11/16 14:55

Pensavo che l'errore dipendesse dalla modalita' di visualizzazione del documento, ma anche con le revisioni nascoste a me funziona bene.
Fai cosi':
-quando ti compare l'errore e sei in debug..
-... premi Contr-g per visualizzare la "Finestra Immediata"
-nelle finestra Immediata scrivi
Codice: Seleziona tutto
?Activedocument.Revisions(I).Type
Pubblica cosa ti risponde nel prossimo messaggio.

Hai provato col doc che avevi condiviso? puoi condividere il documento su cui hai l'errore?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 11/11/16 15:15

Sono sempre interessato al risultato della prova che ti ho detto prima.

Comunque penso sia per modifiche non di tipo cancella o aggiungi; prova (dopo il test detto prima) modificando la parte centrale della macro:
Codice: Seleziona tutto
With ActiveDocument
    For I = 1 To .Revisions.Count
    If .Revisions(I).Type = 1 Or .Revisions(I).Type = 2 Then
        .Revisions(I).Range.Select
        If .Revisions(I).Type = wdRevisionDelete Then
            delW = delW + Selection.Range.Words.Count
        ElseIf .Revisions(I).Type = wdRevisionInsert Then
            addW = addW + Selection.Range.Words.Count
        ElseIf 3 < 2 Then
            Beep
        End If
'Debug.Print delW, addW
    End If
    Next I
End With

Ho aggiunto un If:
If .Revisions(I).Type = 1 Or .Revisions(I).Type = 2 Then /End If

Quanto a separare le due ricerche, la macro conteggia in due varianti diverse le parole cancellate e quelle aggiunte: addW (le aggiunte) delW (le cancellate); non e' sufficiente?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 12/11/16 10:22

Ciao Anthony,
scusa se non ti ho risposto subito.
Allora, ho riprovato ad inserire il primo codice su un altro documento e sembra funzionare bene [non so perché mi dava quell'errore].
C'è però un problema di fondo: il numero delle revisioni che vengono conteggiate non è corretto.
Infatti, sul file in cui la macro funziona, conteggio (manualmente) 328 parole (inserite) [perché diciamo che sono interessata a quelle] mentre il risultato della macro è superiore a 500.
Non posso condividere il documento su cui sto lavorando perché è riservato.
Mi viene il dubbio (anzi, sicuramente è così) che la macro (giustamente) conteggi come parola intera anche l'inserimento di una lettera all'interno di una parola (tipo, se nel documento originale c'è scritto: "cacina" revisionato in "caScina"), la macro mi conteggia l'aggiunta della "S" come parola intera. Mi chiedo se ci sia un modo per poter eliminare questo tipo di conteggio.
Grazie assai!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 14/11/16 01:56

Io per contare le parole mi affido a Word; se vogliamo contare in modo diverso si apre un mondo di interpretazioni aleatorie...
Quello che ti propongo e' condizionare il conteggio dal fatto che la parte modificata sia piu' lunga di un tot di caratteri:
Codice: Seleziona tutto
Sub RevCounter()
Dim I As Long, delW As Long, addW As Long, Soglia As Long
'
Soglia = 1         '<<< La soglia di caratteri modificati
With ActiveDocument
    For I = 1 To .Revisions.Count
    If .Revisions(I).Type = 1 Or .Revisions(I).Type = 2 Then
        .Revisions(I).Range.Select
        If .Revisions(I).Type = wdRevisionDelete Then
            If Len(Selection.Range.Text) > Soglia Then delW = delW + Selection.Range.Words.Count
Debug.Print Len(Selection.Range.Text)
        ElseIf .Revisions(I).Type = wdRevisionInsert Then
            If Len(Selection.Range.Text) > Soglia Then addW = addW + Selection.Range.Words.Count
Debug.Print Len(Selection.Range.Text)
        ElseIf 3 < 2 Then
            Beep
        End If
'Debug.Print delW, addW
    End If
    Next I
End With
MsgBox ("Totale revisioni: " & ActiveDocument.Revisions.Count & vbCrLf _
   & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub
Modifica la riga marcata <<< se vuoi impostare soglie diverse.
Il contatore delle Modifiche effettuate non viene pero' alterato.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 15/11/16 15:50

Ciao Anthony,
scusa se ti rispondo solo ora ma non mi ero accorta della tua risposta!!!
facendo questo:
Soglia = 1 '<<< La soglia di caratteri modificati
dovrei poi avviare diversi conteggi, giusto? [uno per le parole intere modificate, uno per l'aggiunta delle S di cui sopra per esempio, ecc.]
Mi chiedevo inoltre se esiste un modo per velocizzare la prima macro che mi avevi proposto... è di una lentezza sconcertante :)
Grazie!!!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 15/11/16 20:05

No, con quella modifica alla macro se la parte modificata non e' superiore alla soglia indicata (in caratteri) allora la parola modificata non viene contata.

Quale e' "la prima macro" che ti avevo proposta? A me pare che qui abbiamo parlato solo della Sub RevCounter, anche se l'abbiamo modificata un apio di volte. :-?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 23/11/16 18:22

Anthony... non so perché non mi arrivano le notifiche delle tue risposte! Scusa il ritardo! Cmq come "prima macro" intendevo questa:
Codice: Seleziona tutto
    Sub RevCounter()
    Dim I As Long, delW As Long, addW As Long
    '
    With ActiveDocument
        For I = 1 To .Revisions.Count
            .Revisions(I).Range.Select
            If .Revisions(I).Type = wdRevisionDelete Then
                delW = delW + Selection.Range.Words.Count
            ElseIf .Revisions(I).Type = wdRevisionInsert Then
                addW = addW + Selection.Range.Words.Count
            ElseIf 3 < 2 Then
                Beep
            End If
         Next I
    End With
    MsgBox ("Totale revisioni: " & activedocument.Revisions.Count _
       & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
    End Sub
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 03/12/16 20:50

Rimasta indietro...
Ho controllato su un documento di 1100 pagine e 138 revisioni; ha impiegato 10 minuti!
Stesso doc con 468 revisioni: 30 minuti!
Su doc di 88 pagine e 89 revisioni: 30 sec
Stesso doc con 155 revisioni: 1min 30"
Con un po' di esperimenti ho determinato che il collo di bottiglia e' l'accesso alle Revisioni fatto col metodo dell'Indice; con qualche altro esperimento sono arrivata a questa versione
Codice: Seleziona tutto
Sub RevCounter2()
Dim I As Long, delW As Long, addW As Long
Dim pippO As Revision, wCn As Long
'
Application.ScreenUpdating = False
Debug.Print Now
With ActiveDocument
    For Each pippO In .Revisions
    DoEvents
        If pippO.Type = 1 Or pippO.Type = 2 Then
            wCn = pippO.Range.Words.Count
            If pippO.Type = wdRevisionDelete Then
                delW = delW + wCn
            ElseIf pippO.Type = wdRevisionInsert Then
                addW = addW + wCn
            ElseIf 3 < 2 Then
                Beep
            End If
         End If
     Next pippO
End With
Application.ScreenUpdating = True
Debug.Print "End: ", Now
MsgBox ("Totale revisioni: " & ActiveDocument.Revisions.Count & vbCrLf _
   & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub

I tempi di esecuzione sono passati, sul documento di 1100 pagine 468 revisioni, ad alcuni secondi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 17/01/17 18:44

Anthony47 ha scritto:Rimasta indietro...
Ho controllato su un documento di 1100 pagine e 138 revisioni; ha impiegato 10 minuti!
Stesso doc con 468 revisioni: 30 minuti!
Su doc di 88 pagine e 89 revisioni: 30 sec
Stesso doc con 155 revisioni: 1min 30"
Con un po' di esperimenti ho determinato che il collo di bottiglia e' l'accesso alle Revisioni fatto col metodo dell'Indice; con qualche altro esperimento sono arrivata a questa versione
Codice: Seleziona tutto
Sub RevCounter2()
Dim I As Long, delW As Long, addW As Long
Dim pippO As Revision, wCn As Long
'
Application.ScreenUpdating = False
Debug.Print Now
With ActiveDocument
    For Each pippO In .Revisions
    DoEvents
        If pippO.Type = 1 Or pippO.Type = 2 Then
            wCn = pippO.Range.Words.Count
            If pippO.Type = wdRevisionDelete Then
                delW = delW + wCn
            ElseIf pippO.Type = wdRevisionInsert Then
                addW = addW + wCn
            ElseIf 3 < 2 Then
                Beep
            End If
         End If
     Next pippO
End With
Application.ScreenUpdating = True
Debug.Print "End: ", Now
MsgBox ("Totale revisioni: " & ActiveDocument.Revisions.Count & vbCrLf _
   & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub

I tempi di esecuzione sono passati, sul documento di 1100 pagine 468 revisioni, ad alcuni secondi.

Ciao


Ciao Antony,
sono nuovamente qui con questa questione dei track change.
La revisione al VBA sopra [quella in "quote"] funziona alla grande in termini di velocità (prima ci volevano 10 minuti per 5 parole, ora impiega 1 minuto per 5000 parole :)].
Ho però un problema un po' più serio.
Quando una parole viene aggiunta e/o eliminata, assieme ad essa viene anche aggiunto/eliminato lo spazio.
Mi chiedo se c'è un modo per far sì che lo spazio venga "non considerato" nel conteggio.
Grazie assai!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 19/01/17 00:22

La macro usa la metrica di word per contare le parole, e mi sembra strano che lo "spazio" venga contato come "parola".
Comunque con questa penultima versione si puo' impostare una soglia con la lunghezza minima che deve avere una componente affinche' venga contata come parola:
Codice: Seleziona tutto
Sub RevCounter3()
Dim I As Long, delW As Long, addW As Long
Dim pippO As Revision, wCn As Long
'
Soglia = 1                         '<<< Lunghezza da superare
Application.ScreenUpdating = False
Debug.Print Now
With ActiveDocument
    For Each pippO In .Revisions
    DoEvents
        If pippO.Type = 1 Or pippO.Type = 2 Then
'            wCn = pippO.Range.Words.Count
            wCn = 0
            mysplit = Split(pippO.Range.Text, " ", , vbTextCompare)
            For I = 0 To UBound(mysplit)
                If Len(mysplit(I)) > Soglia Then wCn = wCn + 1
            Next I
            If pippO.Type = wdRevisionDelete Then
                delW = delW + wCn
            ElseIf pippO.Type = wdRevisionInsert Then
                addW = addW + wCn
            ElseIf 3 < 2 Then
                Beep
            End If
         End If
     Next pippO
End With
Application.ScreenUpdating = True
Debug.Print "End: ", Now
MsgBox ("Totale revisioni: " & ActiveDocument.Revisions.Count & vbCrLf _
   & "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub

Nel testo di una revisione viene usato lo "spazio" come separatore di Parole; poi di ogni Parola viene misurata la lunghezza, e se SUPERIORE alla soglia (vedi riga marcata <<<) viene conteggiata.

Vedi se questo algoritmo ti piace di piu'...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 19/01/17 16:50

Ciao Anthony,
allora no... mi sa che il problema non è lo spazio...
Utilizzando questo codice:
Sub RevCounter2()
Dim I As Long, delW As Long, addW As Long
Dim pippO As Revision, wCn As Long
'
Application.ScreenUpdating = False
Debug.Print Now
With ActiveDocument
For Each pippO In .Revisions
DoEvents
If pippO.Type = 1 Or pippO.Type = 2 Then
wCn = pippO.Range.Words.Count
If pippO.Type = wdRevisionDelete Then
delW = delW + wCn
ElseIf pippO.Type = wdRevisionInsert Then
addW = addW + wCn
ElseIf 3 < 2 Then
Beep
End If
End If
Next pippO
End With
Application.ScreenUpdating = True
Debug.Print "End: ", Now
MsgBox ("Totale revisioni: " & ActiveDocument.Revisions.Count & vbCrLf _
& "Parole aggiunte: " & addW & vbCrLf & "Parole cancellate: " & delW)
End Sub

Praticamente succede questo: Ex-novo ho aperto un file di word e utilizzato i TCs per inserire del testo.
Ora, word mi conteggia 4105 parole inserite mentre il VBA me ne conteggia 6680. In questo specifico caso, essendo il documento di Word TUTTO in Track changes, il numero di parole che si legge in basso a sinistra del documento (4105) dovrebbe corrispondere a quello conteggiato dal VBA... ma la differenza è abissale!!! Non riesco a capire dove sta l'inghippo...
Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 21/01/17 00:23

Premetto che non ho mai fatto il correttore di bozze ne' il contatore di parole. Ma se fai delle prove con un documento con (molto) meno di 4000 parole ti accorgerai che nel gioco delle revisioni Word conta come parole i simboli di punteggiatura e di cambio riga. Perche' lo faccia non lo so; ma se usi la Sub RevCounter3 e imposti una soglia (maggiore di) 0 allora non ti conteggera' ne' la punteggiatura ne' i salti riga.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conteggio parole in track changes [revisioni]

Postdi AleRosa » 21/01/17 10:20

Premetto che non ne capisco molto di VBA e che i codici che mi hai dato li ho semplicemente copiati e incollati perché non sarei in grado di modificare questa o quella riga perché non ne capisco proprio il significato... non c'è un VBA "standard" da poter utilizzare per documenti che riportano da 1 TC a 10.000 TC?
Grazie mille!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Conteggio parole in track changes [revisioni]

Postdi Anthony47 » 22/01/17 00:17

Nel codice che avevo dato per la Sub RevCounter3 e'presente la riga
Codice: Seleziona tutto
Soglia = 1                         '<<< Lunghezza da superare

Per impostare la soglia che ho suggerito dovrai scrivere 0 al posto di 1

Capisco che non vorresti fare danni, ma ...son sicuro che ce la fai :D :D

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Conteggio parole in track changes [revisioni]":

Le parole della musica!
Autore: nikita75
Forum: Forum off-topic
Risposte: 1

Chi c’è in linea

Visitano il forum: Ricky0185 e 46 ospiti