#vba #replace #outlook #userform #placeholder
#vba #заменить #outlook #форма пользователя #плейсхолдер
Вопрос:
Я не программист, но мне нравится создавать небольшие макросы для экономии времени на итеративных задачах. Прямо сейчас я пытался создать пользовательскую форму, способную заменить в шаблоне HTML несколько заполнителей.
Код, который я сделал до сих пор:
Private Sub CommandButton1_Click()
Dim OutApp As Object
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = Application.CreateItemFromTemplate("C:pathciccio.oft")
With OutMail
.To = TextBox4.Text
.CC = ""
.BCC = ""
.HTMLBody = Replace(.HTMLBody, "###PLACEHOLDER1###", TextBox1.Text)
.HTMLBody = Replace(.HTMLBody, "###PLACEHOLDER2###", ComboBox1.Text)
Unload UserForm2
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Это хорошо работает в текстовом тексте, но в HTML-тексте просто отказывается заменять все ..
и кажется даже немного случайным .. так что что-то заменено, а остальное нет.
Любая помощь?
Комментарии:
1.В редких случаях это полезно, но когда вы видите код с
On Error Resume Next
непосредственно передWith OutMail
удалениемOn Error Resume Next
перед его использованием. Отредактируйте вопрос, чтобы потенциальные респонденты могли попытаться ответить. Как есть, это почти то же самое, что вообще без кода. Если вы видите ошибку, добавьте ее в вопрос.2. спасибо, последовал вашему предложению, удалив сообщение о возобновлении при ошибке, факт остается тем же. Я заменяю несколько заполнителей (таких же, как и раньше) не всеми.
3. Невозможно воссоздать шаблон только с текстом.
Ответ №1:
Решаемая.
Проблема заключается в том, как форматируется текст HTML. Я отредактировал слова-заполнители в другом файле, а затем скопировал непосредственно в шаблон, сохранив его.