Outlook.MailItem - 方法“To”Outlook 2013失败

时间:2015-07-16 07:40:54

标签: vba outlook outlook-vba outlook-2010

我使用“ThisOutlookSession”和表单“UserFormWorkTime”。

使用Outlook 2010我没有遇到任何问题。但是现在使用Outlook 2013 ,我收到以下错误:

Error

这是我的代码:

'Benutzername für E-Mail auslesen
'MsgBox Session.Accounts.Item(1).UserName
Var = Split(Session.Accounts.Item(1).UserName, ".")
Vorname = Var(0)
Name = Var(1)

' E-Mail erstellen und anzeigen
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

If TextBoxInputWorkStart = "" Then

    With objMail
      .To = TextBoxInputTo
      .CC = TextBoxInputCC
      .Subject = "Arbeitszeit " + TextBoxInputDate + ""
      .HTMLBody = "Sehr geehrte Damen und Herren," & "<br><br>" & "aufgrund " & TextBoxInputReason & " war keine Zeiterfassung möglich." & "<br><br>" & "Ende: " & TextBoxInputWorkEnd & "<br><br>" & "Vielen Dank für das Eintragen" & "<br>" & Vorname & " " & Name
      ' A dialog box is open. Close it and try again => avoid this error, display it modelessly
      Unload Me
      objMail.Display

    End With

3 个答案:

答案 0 :(得分:3)

一些事情。

1)如果这是Outlook VBA并且您正确使用ThisOutlookSession,那么就没有了 Set objOutlook = CreateObject("Outlook.Application")

2)始终将字符串s与&连接,不要使用+

3)不要将对象与其.Text值混淆。而不是TextBoxInputDate使用TextBoxInputDate.Text

尝试以下稍微改编的代码:

Dim objMail As MailItem
' E-Mail erstellen und anzeigen

Set objMail = ThisOutlookSession.CreateItem(olMailItem)

With objMail
    .To = TextBoxInputTo.Text
    .CC = TextBoxInputCC.Text
    .Subject = "Arbeitszeit " & TextBoxInputDate.Text & ""
    .HTMLBody = "Sehr geehrte Damen und Herren," & "<br><br>" & "aufgrund " & TextBoxInputReason.Text & " war keine Zeiterfassung möglich." & "<br><br>" & "Ende: " & TextBoxInputWorkEnd.Text & "<br><br>" & "Vielen Dank für das Eintragen" & "<br>" & Vorname & " " & Name
    ' A dialog box is open. Close it and try again => avoid this error, display it modelessly
    Unload Me
    objMail.Display
End With

答案 1 :(得分:3)

使用MailItem类的Recipients属性添加收件人。 “收件人”类的Add方法在“收件人”集合中创建新收件人。新的Recipient对象的Type属性设置为关联的AppointmentItem,JournalItem,MailItem,MeetingItem或TaskItem对象的默认值,必须重置以指示其他收件人类型。

  Set myItem = Application.CreateItem(olMailItem)  
  Set myRecipient = myItem.Recipients.Add ("Eugene Astafiev")  
  myRecipient.Type = olCC

不要忘记使用收件人类的ResolveResolveAll方法来根据地址簿解析收件人。

您是否在代码中遇到任何异常或错误?

答案 2 :(得分:0)

错误代码是RPC_E_DISCONNECTED,这意味着当您仍然引用其中一个对象时,进程外COM服务器已终止。

当代码自动关闭Outlook时,通常会发生这种情况。