Possíveis bases de solução alternativa em Application.WindowSelectionChange Event
. Portanto, você precisa manter as seguintes etapas:
1.Criar módulo de classe
2. Nome seu módulo de classe App
3.Add o seguinte código para 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 Módulo padrão Adicionar variável pública:
Public tmpApp As New App
5. Crie o sub no módulo padrão ou adicione código ao seu Document_Open Event
, que inicializará nossa 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. Faça o submarino acima uma vez ou abra o documento se o código foi adicionado a Document_open event
.
---EDITAR--- (Após alguns comentários do @sid abaixo)
Existem alguns inconvenientes do uso da solução proposta. No entanto, a maioria deles pode ser resolvida adicionando alguns If statements
lado de dentro WindowSelectionChange event
. Verificando a posição de Sel range
Parâmetro, texto e outros permitem decidir com precisão se a nova cor deve ser aplicada ou não.