我有一个包含信息和botton的UserForm。当我单击“ Demander证明”时。 (cbAskAttestation
),您可以在此处查看:
这为我准备了一封电子邮件:
但是,如何将电子邮件矩阵中的数据替换为用户表单文本框中的数据?我想用用户表单中的文本替换电子邮件表右栏中的文本。例如,用SAP替换电子邮件中的“ GRADE”。
UserForm 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
...
答案 0 :(得分:0)
此行执行后,NewMail
包含一个MailItem。
Set NewMail = obApp.CreateItemFromTemplate(pathToTemplate)
您可以使用Body属性获取由模板创建的电子邮件的内容,更改内容,并将Body属性设置为新内容。要设置模板电子邮件中所需的值,可以使用VBA Replace函数,将“ Numero?”,“ Grade?”等替换为其所需的值。
答案 1 :(得分:0)
在Outlook中使用正文的主要方法有三种:
您可以在Chapter 17: Working with Item Bodies文章中了解有关此内容的更多信息。
由您决定选择哪种方式。但是我认为Word在这种情况下可能会有所帮助。要在Outlook VBA代码中使用这些技术,请使用“工具” |“工具”。引用命令可添加对Microsoft Word对象库的引用。