Мы можем вычислить все три части вручную, так же как в этот ответ:
sprintf("%02d:%02d:%02d", x %/% 3600, (x %% 3600) %/% 60, x %% 60)
# [1] "38:49:25" "88:50:17" "145:45:29" "00:24:51" "58:50:31" "07:39:31"
# [7] "04:14:14" "118:45:46" "87:13:36" "02:36:12"
Поскольку один час имеет 3600 секунд, x %/% 3600
дает количество полных часов 112] дает количество полных минут в оставшееся время, а x %% 60
- количество оставшихся секунд.
Это не с 2007, но идея должна подойти. Этот пример изменяет любое текущее выделение на новое выделение по умолчанию (wdBrightGreen) и любой зеленый текст к красному.
Sub ChangeColor
Options.DefaultHighlightColorIndex = wdBrightGreen
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorBrightGreen
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorRed
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Можно всегда сохранить файл как HTML и заменять цвета там. Цвет представлен с
<span style='color:red'>...
и выделение
<span style='background:yellow;mso-highlight:yellow'>...
Должно быть легко управлять, если Ваш документ достаточно прост.
Редактирование, которое отвечает на редактирование в вопросе: После того, как Вы сделаны, вновь открыли файл и сохранили файл назад как .doc.
Это должно работать на Вашу цель:
Sub RehiliteAll()
Const YOUR_REQUIRED_COLOR_IDX As Integer = 6 'RED'
Dim doc As Range
Set doc = ActiveDocument.Range
With doc.Find
.ClearFormatting 'resets default search options'
.Highlight = True
.Wrap = wdFindStop
While .Execute
If doc.HighlightColorIndex = YOUR_REQUIRED_COLOR_IDX Then
doc.Select
MsgBox doc.HighlightColorIndex
'Do stuff here'
End If
'doc has been reassigned to the matching'
'range; we do this so word keeps searching'
'forward'
doc.Collapse wdCollapseEnd
Wend
End With
Set doc = Nothing
End Sub
'I am closing comment quotes so that SO formatting'
'does not get messed up too much.'