Finite le (mie) vacanze riprendo questa discussione anche se penso che per W&G quanto avete fatto sia gia' sufficiente, e propongo una ipotesi basata su una OnTime, seguendo il seguente approccio:
-Inserire nel progetto Normal una sub che si riesegue periodicamente con OnTime
-Questa Sub ontime viene avviata all'apertura del documento da monitorare
-I dati statistici vengono presentati su una userform
Quindi il progetto "Normal" dovra' includere:
-una userform che ho chiamato InfoForm (1)
-il modulo che ho chiamato ModuloTimed, con la sub che si esegue ontime (2)
Il codice della sub ontime:
- Codice: Seleziona tutto
Sub Timed()
Dim myNext As Date, toMonitor As String
Dim cIPPa As Object, CippaYes As Boolean, CE As Document
'
Debug.Print ""
toMonitor = "Proto_Timed.docm" '<<< Il nome del Documento cui associare questa gestione
On Error Resume Next
Debug.Print ActiveDocument.Name
Set CE = Documents(toMonitor)
On Error GoTo 0
If CE Is Nothing Then
'il Doc da monitorare non e' aperto:
Unload InfoForm
Exit Sub
End If
For Each cIPPa In UserForms
If cIPPa.Name = "InfoForm" Then
CippaYes = True
Exit For
End If
Next cIPPa
If Not CippaYes Then
InfoForm.Show vbModeless
InfoForm.Left = ActiveWindow.Width - InfoForm.Width - 20
End If
myNext = Now + TimeValue("00:00:02")
Application.OnTime myNext, "Timed"
Debug.Print "ReTimed", Now
If ActiveDocument.Name = toMonitor Then
Debug.Print ">>> Run", Now
InfoForm.Label2.Caption = ActiveDocument.Range.ComputeStatistics(wdStatisticWords)
InfoForm.Label4.Caption = ActiveDocument.Range.ComputeStatistics(wdStatisticCharacters)
InfoForm.Label6.Caption = ActiveDocument.Range.ComputeStatistics(wdStatisticParagraphs)
InfoForm.Label7.Caption = Format(Now, "hh:mm:ss")
End If
'
End Sub
L'istruzione marcata <<< va personalizzata come da commento
ModuloTimed e il suo contenuto puo' essere generato scaricando questo file e poi, dal progetto Normal, facendo Menu /File /Importa file
https://www.dropbox.com/s/bi5008yva1car ... d.bas?dl=0Per generare la userform scaricare questi due file e poi importare il file InfoForm.frm
https://www.dropbox.com/s/corjbhodcsmea ... m.frm?dl=0https://www.dropbox.com/s/104ck3cfka7s0 ... m.frx?dl=0Il documento da monitorare e' opportuno che contenga, nel modulo ThisDocument
- Codice: Seleziona tutto
Private Sub Document_Open()
Debug.Print "Aperto:", ThisDocument.Name, Now
Call Normal.ModuloTimed.Timed
End Sub
Private Sub Document_Close() 'solo per debug
Debug.Print "Chiuso:", ActiveDocument.Name, Now
Beep
End Sub
Questo avviera' la Sub Timed e la relativa form appena si apre il documento.
La Sub Document_Close come pure tutte le righe Debug.Print sono solo per debug; quindi possono essere eliminate.
Con tutto questo ambaradan, quando il documento da monitorare verra' aperto si attiveranno la userform e la Sub Timed, che si ripetera' ogni 2 secondi (la frequenza puo' essere ovviamente modificata nel codice); sulla form sono riportati alcuni dati statistici relativi alla lunghezza del documento monitorato.
Spero che sia di qualche utilita'...