Possibili basi di soluzione alternativa Application.WindowSelectionChange Event
. Pertanto è necessario conservare i seguenti passaggi:
1. Creare Modulo di classe
2.Name il tuo modulo di classe App
3. Aggiungere il seguente codice a App Class Module
:
Public WithEvents WRD As Application
Private Sub WRD_WindowSelectionChange(ByVal Sel As Selection)
'here you should place solution from your Document_Open sub
'which defines color based on user name or...
'you could place it somewhere else but pass color value
'here as a parameter
'for test I just assumed that color should be blue
Sel.Font.Color = wdColorBlue
End Sub
4.In Modulo standard Aggiungi variabile pubblica:
Public tmpApp As New App
5. Crea sottomarino nel modulo standard o aggiungi codice al tuo Document_Open Event
, che inizializzerà la nostra classe:
Sub Document_Open_new()
Set tmpApp.WRD = Application
'we need to change selection once to trigger full
'scope of solution
'if we omit the code below new color will not work
'if user add new text at the beginning of the document
'right after it was opened
Dim tmpSel As Range
Set tmpSel = Selection.Range
ActiveDocument.Bookmarks("\EndOfDoc").Select
tmpSel.Select
End Sub
6.Run il documento sub una volta o aperto se il codice è stato aggiunto Document_open event
.
---MODIFICARE--- (Dopo alcuni commenti da @SID di seguito)
Ci sono alcuni inconvenienti nell'uso della soluzione proposta. Tuttavia, la maggior parte di essi potrebbe essere risolta aggiungendo alcuni If statements
dentro WindowSelectionChange event
. Controllare la posizione di Sel range
Il parametro, il testo intorno e gli altri consentono di decidere con precisione se il nuovo colore debba essere applicato o meno.