2017-07-26 3 views
1

Ich versuche, ein Outlook-Benutzerformular zu erstellen, wo ein Operator über ein Dropdown-Menü eine E-Mail-Vorlage auswählen kann.Wählen Sie E-Mail-Vorlage aus einem Dropdown-Menü Benutzerformular - Objekt ist erforderlich

Mit this Beispiel ist dies der Code für das Outlook-Formular, das einwandfrei funktioniert.

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 

Dies ist der Code, den ich zusammengestellt habe, um die Vorlage auszuwählen. Wenn ich das Dropdown-Menü benutze, um die "Testvorlage" auszuwählen, erhalte ich hier einen Fehler, "Test.Wählen", um ein Objekt hervorzuheben.

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

und was sollte dieser 'Test' sein? Wo ist es erklärt und initialisiert (die Art, wie Sie es verwenden, deutet darauf hin, dass es ein Objekt ist) – avb

+0

Hallo @avb, danke, dass du dir die Zeit genommen hast, um mit mir zurück zu kommen. Test war der Name meiner Vorlage, aber mit der Lösung von niton unten konnte ich das zum Laufen bringen. Vielen Dank und Grüße Chris – IRHM

Antwort

0

Um E-Mails aus einer Vorlage https://msdn.microsoft.com/VBA/Outlook-VBA/articles/application-createitemfromtemplate-method-outlook

Set MyItem = Application.CreateItemFromTemplate("C:\statusrep.oft") 

Führen Sie diesen Code in Outlook sehen zu erzeugen, um zu sehen, wie die Auswahl zu verwenden.

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 
+0

Hallo @ niton, vielen Dank dafür, es funktioniert super. Mit freundlichen Grüßen Chris – IRHM

Verwandte Themen