Возможные обходные основания на Application.WindowSelectionChange Event
. Анкет Поэтому вам нужно сделать следующие шаги:
1. Create Class Module
2. Назвать свой класс модуль App
3. Добавьте следующий код к 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. В стандартном модуле добавить общественную переменную:
Public tmpApp As New App
5. Create sub в стандартном модуле или добавьте код в свой Document_Open Event
, который инициализирует наш класс:
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. Заключите приведенный выше подставку один раз или откройте документ, если код был добавлен в Document_open event
.
---РЕДАКТИРОВАТЬ--- (После некоторых комментариев из @SID ниже)
Есть некоторые неудобства использования предлагаемого решения. Однако большинство из них могут быть решены путем добавления некоторых If statements
внутри WindowSelectionChange event
. Анкет Проверка положения Sel range
Параметр, текст вокруг и другие позволяют точно решить, следует ли применяться новый цвет или нет.