首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将电子邮件中的矩阵数据替换为userForm文本框中的数据?

如何将电子邮件中的矩阵数据替换为userForm文本框中的数据?
EN

Stack Overflow用户
提问于 2019-06-27 17:56:10
回答 2查看 39关注 0票数 0

我有一个带有信息和按钮的UserForm。当我点击"Demander Attest.“(cbAskAttestation)时,你可以在这里看到:

这将为我准备一封电子邮件:

但是,如何将电子邮件矩阵中的数据替换为用户表单文本框中的数据呢?我想用用户表单中的文本替换电子邮件表右列中的文本。例如,将电子邮件中的“等级”替换为SAP。

附件

UserForm ufReservistInformations中的数据来自以下代码:

代码语言:javascript
运行
复制
        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

我创建了一个如下模板的电子邮件:

代码语言:javascript
运行
复制
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

尝试使用RobertBaron的答案,如下所述

我尝试使用Replace函数。

代码语言:javascript
运行
复制
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)后的结果

代码语言:javascript
运行
复制
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
...

EN

回答 2

Stack Overflow用户

发布于 2019-06-27 18:30:20

在执行此行之后,NewMail包含一个MailItem

代码语言:javascript
运行
复制
Set NewMail = obApp.CreateItemFromTemplate(pathToTemplate)

您可以使用Body属性获取模板创建的电子邮件的内容,更改内容,并将Body属性设置为新内容。要在模板化的电子邮件中设置您想要的值,您可以使用VBA Replace函数,将"Numero ?“、"Grade ?”等替换为它们所需的值。

票数 0
EN

Stack Overflow用户

发布于 2019-06-29 03:26:13

在Outlook中使用正文有三种主要方式:

  1. Body.
  2. HTMLBody.
  3. 检查器类提供了WordEditor属性,该属性从Word对象模型返回表示消息体的Document类的实例。Outlook使用Word作为电子邮件编辑器。

您可以在Chapter 17: Working with Item Bodies文章中阅读更多关于这方面的内容。

选择哪种方式由你决定。但我认为Word在这种情况下可能会有所帮助。若要在Outlook VBA代码中使用这些技术,请使用“工具”|“引用”命令添加对Microsoft Word对象库的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56788536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档