我正在尝试设置一个表单,用户可以点击按钮,它会提取联系人的电子邮件地址,创建新的电子邮件,允许用户输入他们的电子邮件并发送,然后保存通过电子邮件发送到表格中。
我有它的工作,除了一个小问题。在早期版本的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一样?
答案 0 :(得分:1)
While Not objOutlook.ActiveInspector Is Nothing
DoEvents
Wend
它对我有用。如果能够正常工作,请检查一下。
答案 1 :(得分:0)
确实,当您使用Word作为编辑器打开Outlook时,您正在创建Outlook和Word的新实例。您应该可以通过OutlookMsg对象取消Word作为编辑器的使用。
如果邮件非常简单,没有附件,您也可以在备忘录控件中键入它们并直接从Access发送它们(sendObject命令),但它们不会保存到Outlook。