Я пытаюсь создать макрос VBA для Outlook 2013, который возьмет выбранный текст в сообщении электронной почты, которое я сейчас пишу (в формате HTML), и установит размер/цвет/жирность/выделение шрифта.
Мой макрос имеет два блока if/then. Один блок предназначен для Outlook 2003 и дает желаемый результат для всех четырех характеристик текста. Однако после 2003 года Outlook использует Word EditorType для электронных писем в формате HTML, и поэтому мне нужен другой блок VBA с другим синтаксисом для изменения шрифта выделенного текста. VBA в моем блоке 2013 года правильно работает для изменения жирности/размера точки, но не применяет выделение к тексту. Вместо этого команда выделения текста (rng.Range.HighlightColorIndex = wdYellow) приводит к тому, что цвет фона окна выбора становится прозрачным (так что текст больше не кажется выделенным, даже если он все еще действительно выделен) , но выделение выделенного текста не применяется.
Когда выделение текста не работало, я пробовал что-то другое. Я попытался использовать команду vba для установки желтого фона (который имеет эквивалентный визуальный эффект при ручном применении без vba). rng.Shading.BackgroundPatternColor = wdColorYellow. Но вместо того, чтобы сделать фон желтым, фон становится черным.
Также блок 2013 не вызывает изменения цвета шрифта. Цвет шрифта остается черным, несмотря на оператор (rng.Font.Color = wdColorBlue)
Пожалуйста, сообщите мне, как я могу выделить выделенный текст желтым цветом и установить цвет выделенного текста на синий.
Полный макрос VBA приведен ниже.
Sub ChangeSelectedFontBold14HiYellow()
Dim msg As Outlook.MailItem
Dim insp As Outlook.Inspector
Set insp = Application.ActiveInspector
If insp.CurrentItem.Class = olMail Then
Set msg = insp.CurrentItem
If insp.EditorType = olEditorHTML Then ' outlook 2003
Set hed = msg.GetInspector.HTMLEditor
Set rng = hed.Selection.createRange
rng.pasteHTML "<b><font style='color: blue; background: yellow; font-size: 14pt;'>" & rng.Text & "</font></b>"
End If
If insp.EditorType = olEditorWord Then ' outlook 2013
Set hed = msg.GetInspector.WordEditor
Set word = hed.Application
Set rng = word.Selection
rng.Font.Size = 14
rng.Font.Color = wdColorBlue ' color does not change
rng.Font.Bold = True
' rng.Shading.BackgroundPatternColor = wdColorYellow ' changes background color to black instead of yellow
' rng.HighlightColorIndex = wdYellow ' does not work ' error 438 object doesn't support this property
rng.Range.HighlightColorIndex = wdYellow ' does not work - changes the background to clear for the selection indicator color
End If
End If
Set insp = Nothing
Set rng = Nothing
Set hed = Nothing
Set msg = Nothing
End Sub