Как заменить данные матрицы в электронном письме данными в текстовом поле пользовательской формы? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть пользовательская форма с информацией и информацией. Когда я нажимаю «Demander Attest». (cbAskAttestation), которую вы можете увидеть здесь:

![introducir la descripción de la imagen aquí

это готовит мне письмо:

introducir la descripción de la imagen aquí

Однако, как заменить данные в матрице электронного письма данными в текстовом поле формы пользователя? Я хотел бы заменить текст в правом столбце таблицы электронной почты на текст в пользовательской форме. Например, замените «GRADE» в электронном письме на SAP.

Приложение

Данные в пользовательской форме ufReservistInformations поступают из этого кода:

        Sheets("RECAP").Cells(Lig, 2) = cboFunction
        Sheets("RECAP").Cells(Lig, 5) = cboSexReservist
        Sheets("RECAP").Cells(Lig, 6) = cboRankReservist
        Sheets("RECAP").Cells(Lig, 7) = txtIncorporationNumberReservist
        Sheets("RECAP").Cells(Lig, 8) = txtBsnReservist
        Sheets("RECAP").Cells(Lig, 9) = txtBirthdateReservist
        Sheets("RECAP").Cells(Lig, 10) = txtAgeReservist
        Sheets("RECAP").Cells(Lig, 11) = txtBirthplaceReservist
        Sheets("RECAP").Cells(Lig, 12) = txtAddressReservist
        Sheets("RECAP").Cells(Lig, 13) = txtZipcodeReservist
        Sheets("RECAP").Cells(Lig, 15) = txtPhoneReservist
        Sheets("RECAP").Cells(Lig, 17) = txtEmailReservist
        Sheets("RECAP").Cells(Lig, 18) = txtContactReservist
        Sheets("RECAP").Cells(Lig, 19) = txtJobReservist
        Sheets("RECAP").Cells(Lig, 20) = txtEsrReservist
        Sheets("RECAP").Cells(Lig, 21) = cboLengthContractReservist
        Sheets("RECAP").Cells(Lig, 22) = txtEndEsrReservist
        Sheets("RECAP").Cells(Lig, 23) = cboSav1Reservist
        Sheets("RECAP").Cells(Lig, 24) = txtSav1CommentReservist
        Sheets("RECAP").Cells(Lig, 25) = txtRetrainingReservist
        Sheets("RECAP").Cells(Lig, 26) = txtFmaChiefReservist
        Sheets("RECAP").Cells(Lig, 27) = txtVsaReservist
        Sheets("RECAP").Cells(Lig, 28) = txtNextVsaReservist

И я создаю письмо следующего шаблона:

Sub CreateEmailfromTemplate(ByVal email As String, ByVal pathToTemplate As String)
    Dim obApp As Object
    Dim NewMail As Outlook.MailItem

    Set obApp = Outlook.Application
    'Change the template file folder path according to your case
    Set NewMail = obApp.CreateItemFromTemplate(pathToTemplate)
    With NewMail
        .To = email
    End With
    NewMail.Display

    Set obApp = Nothing
    Set NewMail = Nothing
End Sub

Попытка ответа Роберта Барона, описанного ниже

Я пытался использовать функцию замены.

Dim obApp As Object
Dim NewMail As Outlook.MailItem

Set obApp = Outlook.Application
'Change the template file folder path according to your case
Set NewMail = obApp.CreateItemFromTemplate("\\bspp.fr\Travail\CCL1\MTMA\Groupe Adjudant de Compagnie\RESERVISTES\CORRESPONDANCE\Demande d'attestation de recyclage.msg")
With NewMail
    mailBody = .Body
End With

mailBody = Replace(mailBody, "1cl", cboRankReservist)
With NewMail
    .Body = mailBody
End With

NewMail.Display

Set obApp = Nothing
Set NewMail = Nothing

И все же результаты не сохраняют массив и отображают столбец слов. Действительно, вот результаты только после использования mailBody = Replace(mailBody, "1cl", cboRankReservist)

Bonjour,

J’ai l’honneur de vous demander une attestation de formation continue équipier-secouriste pour le personnel suivant : 


Groupement
1 GIS
Compagnie
20
N° incorporation
91109
Grade
1cl
...

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Существует три основных способа работы с телами в Outlook:

  1. Тело .
  2. HTMLBody .
  3. Класс Inspector предоставляет свойство WordEditor , которое возвращает экземпляр класса Document из объектной модели Word, представляющей тело сообщения.Outlook использует Word в качестве редактора электронной почты.

Подробнее об этом можно прочитать в статье Глава 17: Работа с телами предметов .

От вас зависит, какой путь выбрать.Но я думаю, что Word может помочь в этом сценарии.Чтобы использовать эти методы в коде Outlook VBA, используйте Сервис |Команда «Ссылки» для добавления ссылки в библиотеку объектов Microsoft Word.

0 голосов
/ 27 июня 2019

После выполнения этой строки NewMail содержит MailItem .

Set NewMail = obApp.CreateItemFromTemplate(pathToTemplate)

. Вы можете использовать свойство Body , чтобы получить содержимое электронного письма.как созданный шаблоном, измените содержимое и установите для свойства Body новое содержимое.Чтобы установить нужные значения в шаблонном электронном письме, вы можете использовать функцию VBA Replace , чтобы заменить «Numero?», «Grade?» И т. Д. На их требуемые значения.

...