Вставить текст в электронную почту Outlook с помощью vba - PullRequest
0 голосов
/ 06 августа 2020

У меня есть этот фрагмент кода, который я получил в результате поиска и изменил для своих нужд. У меня он работает хорошо, но мне нужно разместить команду pastespecial под текстом «Условия» в переменной xOutMsg, в настоящее время она вставляется в первую строку в электронном письме, но я хотел бы вставить следующую строку после слово «Условия», может ли кто-нибудь мне помочь?

Sub PrepareConditionsEmail()
Dim objDoc As Word.Document
Dim objSel As Word.Selection
Dim xOutApp As Object
Dim xOutMail As Object
Dim xOutMsg As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xOutMsg = "<br /><br /><b><u>Conditions:</b></u><br /><br />" & "<b><u> </b></u><br />"
With xOutMail
    '.To = "Email Address"
    .CC = ""
    .BCC = ""
    .Subject = "Conditions"
    .HTMLBody = xOutMsg
    .Display
End With
Set xOutMail = Nothing
Set xOutApp = Nothing
On Error Resume Next
Set objDoc = Application.ActiveInspector.WordEditor
Set objSel = objDoc.Windows(1).Selection
objSel.PasteSpecial Link:=False, _
DataType:=wdPasteText, _
Placement:=wdInLine, _
DisplayAsIcon:=False
End Sub

1 Ответ

0 голосов
/ 06 августа 2020

Кажется, вам нужно проанализировать сообщение и вставить туда свой текст или разметку. Свойство MailItem.HTMLBody устанавливает строку, представляющую тело HTML указанного элемента. Используйте функцию InStr, которая возвращает длинное число, определяющее позицию первого вхождения одной строки в другую. Получив позицию ключевого слова, вы можете вставить свою подстроку сразу после ключевого слова.

 InStr(mail.HTMLBody, "keyword", 1)

Подробнее о функции InStr в MSDN.

Объектная модель Outlook поддерживает три основных способа настройки тела сообщения:

  1. Свойство Body возвращает или устанавливает строку, представляющую текстовое тело элемента Outlook.
  2. Свойство HTMLBody класса MailItem возвращает или задает строку, представляющую тело HTML указанного элемента. Установка свойства HTMLBody всегда немедленно обновляет свойство Body. Например:
     Sub CreateHTMLMail() 
       'Creates a new e-mail item and modifies its properties. 
       Dim objMail As Outlook.MailItem 
       'Create e-mail item 
       Set objMail = Application.CreateItem(olMailItem) 
       With objMail 
        'Set body format to HTML 
        .BodyFormat = olFormatHTML 
        .HTMLBody = "<HTML><BODY>Enter the message <a href="http://google.com">text</a> here. </BODY></HTML>" 
        .Display 
       End With 
     End Sub
Объектная модель Word может использоваться для работы с телами сообщений. См. Глава 17: Работа с телами элементов для получения дополнительной информации.

Нет необходимости смешивать подходы HTMLBody и WordEditor вместе. Вы можете выбрать один способ и использовать его.

...