从访问Outlook电子邮件和再次返回

时间:2009-09-10 20:37:40

标签: ms-access vba outlook

我正在尝试设置一个表单,用户可以点击按钮,它会提取联系人的电子邮件地址,创建新的电子邮件,允许用户输入他们的电子邮件并发送,然后保存通过电子邮件发送到表格中。

我有它的工作,除了一个小问题。在早期版本的Outlook(2003及更早版本)中,您可以将Word设置为电子邮件编辑器。如果是这种情况,代码永远不会完成。

 Dim objOutlook As Object 
 Dim objmessage As Object 
 Dim myInspector As Variant

 Set objOutlook = CreateObject("outlook.application", "localhost")
 Set objmessage = objOutlook.createItem(0)
 objmessage.To = Me!email
 Set myInspector = objmessage.GetInspector
 myInspector.display

 (v THIS IS THE CODE THAT LOOPS, SEE BELOW v)
 While Not myInspector.CurrentItem Is Nothing
    DoEvents
 Wend

当Outlook是电子邮件编辑器时,上面标记的while块会循环,直到用户发送或关闭电子邮件消息(myInspector.CurrentItem被清除)。然后从那里继续将信息拉回到Access中。但是,当Word是电子邮件编辑器时,上面标记的代码将永远循环(myInspector.CurrentItem永远不会被清除)。任何人都知道为什么会这样做?如果你这样做,我该怎么做才能解决这个问题,所以它适用于Word作为电子邮件编辑器,就像它对Outlook一样?

2 个答案:

答案 0 :(得分:1)

 While Not objOutlook.ActiveInspector Is Nothing
    DoEvents
 Wend

它对我有用。如果能够正常工作,请检查一下。

答案 1 :(得分:0)

确实,当您使用Word作为编辑器打开Outlook时,您正在创建Outlook和Word的新实例。您应该可以通过OutlookMsg对象取消Word作为编辑器的使用。

如果邮件非常简单,没有附件,您也可以在备忘录控件中键入它们并直接从Access发送它们(sendObject命令),但它们不会保存到Outlook。