我正在尝试创建一个Outlook Userform,通过下拉菜单,操作员可以选择一个电子邮件模板。
使用this示例,这是Outlook表单的代码,可以正常工作。
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "Test"
.AddItem "Template 2"
.AddItem "Template 3"
.AddItem "Template 7"
.AddItem "Template 5"
.AddItem "Template 6"
End With
End Sub
Private Sub btnOK_Click()
lstNum = ComboBox1.ListIndex
Unload Me
End Sub
这是我开始整理的代码,用于选择模板。当我使用下拉菜单选择“测试模板”时,我在此处收到错误“Test.Select”,突出显示对象是必需的。
Public lstNum As Long
Public Sub ChooseTemplate()
Dim oMail As Outlook.MailItem
Dim oContact As Outlook.ContactItem
Dim strTemplate As String
UserForm1.Show
Select Case lstNum
Case -1
' -1 is what you want to use if nothing is selected
strTemplate = "Test"
Case 0
strTemplate = "template-1"
Case 1
strTemplate = "template-2"
Case 2
strTemplate = "template-3"
Case 3
strTemplate = "template-4"
Case 4
strTemplate = "template-5"
End Select
Test.Select
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Test Facility"
.HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>Hi " You recently confirmed you require continued use of the test facility
"<p>Many thanks and kind regards</p></BODY>" & Signature
.Sensitivity = 2
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
wb.Close savechanges:=True
End If
Set oMail = Nothing
End Sub
答案 0 :(得分:0)
要从模板生成邮件,请参阅https://msdn.microsoft.com/VBA/Outlook-VBA/articles/application-createitemfromtemplate-method-outlook
Set MyItem = Application.CreateItemFromTemplate("C:\statusrep.oft")
在Outlook中运行此代码以查看如何使用选择。
Public lstNum As Long
Public Sub ChooseTemplate()
Dim outMail As Outlook.MailItem
UserForm1.Show
Select Case lstNum
' Following the listbox entries
Case -1
' -1 is what you want to use if nothing is selected
Set OutMail = CreateItemFromTemplate("Path\to\test.oft")
Case 0
Set OutMail = CreateItemFromTemplate("Path\to\test.oft")
Case 1
Set OutMail = CreateItemFromTemplate("Path\to\template-2.oft")
Case 2
Set OutMail = CreateItemFromTemplate("Path\to\template-3.oft")
Case 3
Set OutMail = CreateItemFromTemplate("Path\to\template-7.oft")
Case 4
Set OutMail = CreateItemFromTemplate("Path\to\template-5.oft")
Case 5
Set OutMail = CreateItemFromTemplate("Path\to\template-6.oft")
End Select
' Use for a specific purpose not randomly
' On Error Resume Next
With OutMail
.To = "cell.Value" ' For this Outlook demo
' This should be in the template
' .Subject = "Test Facility"
' .HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>Hi " You recently confirmed you require continued use of the test facility
' "<p>Many thanks and kind regards</p></BODY>" & Signature
' .Sensitivity = 2
.Display
End With
' On Error GoTo 0
cleanup:
Set OutMail = Nothing
End Sub