Я пытаюсь изменить тело HTML шаблона Outlook EMail из Excel VBA.
Мой код:
Sub Email_Button()
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItemFromTemplate("S:\some\path\to\file\Email.oft")
With OutMail
.Importance = olImportanceHigh
.Subject = "Subject " & Date
.Attachments.Add Application.ActiveWorkbook.FullName
.HTMLBody = WorksheetFunction.Substitute(OutMail.HTMLBody, "%target%", "replacement")
.Display
End With
' *** TIDY UP ***
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Вопрос очень похож на this one.
Когда я запускаю приведенный выше код, я получаю Run Time Error 287. Application-defined or object-defined error
- ошибка появляется в строке модификации .HTMLBody.
Если я удаляю эту строку, код работает нормально, иотображается электронная почта - чтобы пользователь мог проверить ее перед отправкой.
Я ссылался на библиотеку объектов Microsoft Outlook 15.
Что не так?
ОБНОВЛЕНИЕ
Я добавил:
With OutMail
.bodyFormat = olFormatHTML
Но все равно получил ту же ошибку в строке замены.Поэтому я заменил замену на:
.HTMLBody = "<HTML><BODY>Some HTML text here</BODY></HTML>"
И тело письма было обновлено до этого без ошибок.
Так что ошибка присутствует только при попытке использовать заменитель или его дляделать с часто.
Из отладчика похоже, что нет HTML-тела:
Тем не менее я подтвердил, что для типа тела установлено значениеHTML оба программно:
И, открыв часто сообщение и проверяя: