【问题标题】:Apply Outlook userform values to email template将 Outlook 用户表单值应用于电子邮件模板
【发布时间】:2018-09-18 23:02:07
【问题描述】:

我想在用户表单中选择特定值,并根据选择重新格式化电子邮件模板并替换文本,或者只是打开一封空电子邮件并将键/文本发送到电子邮件标题、正文等(名称、姓氏等值)

用户表单。

Private Sub TextBox1_Change()

End Sub

Private Sub TextBox2_Change()

End Sub

Private Sub TextBox3_Change()

End Sub

Private Sub UserForm_Initialize()
With ComboBox1
 .AddItem "Form1"
 .AddItem "Form2"

End With

With ComboBox2
 .AddItem "Mr"
 .AddItem "Miss"
 .AddItem "Mrs"
 .AddItem "Ms"

End With

  With ComboBox3
 .AddItem "You"
 .AddItem "He"
 .AddItem "She"

End With

End Sub

执行按钮代码。

Private Sub CommandButton1_Click()

If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or _
  ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Then
    MsgBox ("Fill in all Boxes")

End If
End Sub

Sub template()

Dim myItem As Outlook.MailItem
Dim strContact As String
Dim strHTML As String

Dim typeofapplication As String
Dim title As String
Dim name As String
Dim surename As String
Dim expierydate As String
Dim gender As String

typeofapplication = ComboBox1.Value
title = ComBox2.Value
name = TextBox1_Change.Value
surename = TextBox2_Change.Value
expierydate = TextBox3_Change.Value
gender = ComBox3.Value

Set myItem = Application.CreateItemFromTemplate("C:\test.oft")
strHTML = myItem.HTMLBody

myItem.Display
End Sub

代码在“填写所有框”之前有效。按下 OK 按钮后,它会停在myItem.Display

如果我不使用用户表单,则可以打开模板。

【问题讨论】:

  • 如果您的代码在单击 CommandButton1 后应该可以工作,那么您应该调用模板 sub。在 end if 之后调用模板,在 end if 之前退出 sub。
  • 我已尝试将子模板添加到 CommandButton1_Click。它停在 myItem.Display
  • 停止是什么意思?它会返回错误吗?你能说得具体点吗?
  • 是的,当我调试时它指的是行“myItem.Display”

标签: vba templates userform


【解决方案1】:

正如我在评论中所说,您应该在 CommandButton1_Click Sub 中调用模板 sub。而且,当您的条件为真时,您应该退出 sub,因为当您的任何文本框或组合框为空时,您不希望运行您的代码。它应该是这样的:

Private Sub CommandButton1_Click()
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Then
    MsgBox ("Fill in all Boxes")
    Exit Sub
End If
    template
End Sub

其次,当出现问题时,您会收到一条错误消息,通常带有错误编号和一些描述。我不得不尝试你的代码来了解这个错误是什么。

错误提示:“Outlook 无法执行此操作,因为打开了一个对话框。请关闭它并重试。”如果您在问题中指出了这一点,您将立即得到“卸载我”的答案。下次当您发布问题时,您也应该指出错误。

您无法使其运行,因为您首先需要关闭用户表单才能打开模板电子邮件。所以在你的代码中插入Unload Me

Set myItem = Application.CreateItemFromTemplate("C:\test.oft")
strHTML = myItem.HTMLBody

Unload Me
myItem.Display
End Sub

【讨论】:

  • 感谢您的回复,抱歉没有具体说明,我是新手。我会在早上第一时间应用您的建议,因为在当前的电脑上我没有前景。
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 2017-12-15
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2019-01-08
  • 2015-08-10
相关资源
最近更新 更多