Макрос MS Outlook для вычеркивания выделенного текста
Задача - применить вычеркнуть текущий шрифт в выбранной области текста.
Трудность заключается в том, что Outlook не поддерживает запись макросов "на лету" - он хочет, чтобы код был написан вручную.
Например, следующий простой код:
Selection.Font.Strikethrough = True
работает для Word, но дает сообщение об ошибке для Outlook:
Run-time error '424':
Object required
Ответы
Ответ 1
Это предполагает, что на вашем поле также установлен Word. Если это так, вы можете получить доступ к большинству Word OM из Outlook VBE без ссылки на Word с помощью объекта ActiveInspector.WordEditor.
Sub StrikeThroughinMailItem()
Dim objOL As Application
Dim objDoc As Object
Dim objSel As Object
Set objOL = Application
Set objDoc = objOL.ActiveInspector.WordEditor
Set objSel = objDoc.Windows(1).Selection
objSel.Font.Strikethrough = True
End Sub
Ответ 2
Вот несколько заметок о том, как общаться с открытым сообщением, нет проверок, он просто предполагает, что у вас есть открытый почтовый элемент. Если вы хотите сказать немного больше о том, что вы хотите сделать, и в какой версии я могу помочь немного больше.
Dim ActiveMessage As MailItem
Dim strHTML As String
Set ActiveMessage = ActiveInspector.CurrentItem
Debug.Print ActiveMessage.Body
Debug.Print ActiveMessage.HTMLBody
strHTML = Replace(ActiveMessage.Body, "This sentence is bold", _
"<STRONG>This sentence is bold</STRONG>")
ActiveMessage.HTMLBody = strHTML
Debug.Print ActiveMessage.HTMLBody
Ответ 3
Вам нужно получить доступ к инспектору HTMLEditor или WordEditor. Проверьте файл справки на пример кода. Если вы используете WordEditor, вы можете записать макрос в Word и включить результирующий код в макрос Outlook с помощью WordEditor.
Public Sub DoIt()
'must set word as mail editor
'must set reference to word object library
Dim oInspector As Outlook.Inspector
Dim oDoc As Word.Document
Dim oItem As Outlook.MailItem
Set oItem = Outlook.Application.CreateItem(olMailItem)
oItem.BodyFormat = olFormatRichText 'must set, unless default is rich text
Set oInspector = oItem.GetInspector
oInspector.Display 'must display in order for selection to work
Set oDoc = oInspector.WordEditor
'better to use word document instead of selection
'this sample uses selection because word macro recording using the selection object
Dim oSelection As Word.Selection
Set oSelection = oDoc.Application.Selection
oSelection.TypeText Text:="The task is to apply strikethroughout."
oSelection.MoveLeft Unit:=wdCharacter, Count:=4
oSelection.MoveLeft Unit:=wdCharacter, Count:=7, Extend:=wdExtend
oSelection.Font.Strikethrough = True
End Sub