VBA замена ВСЕХ заполнителей в шаблоне Outlook html на текстовое поле формы пользователя и поле со списком

#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. Я отредактировал слова-заполнители в другом файле, а затем скопировал непосредственно в шаблон, сохранив его.