【发布时间】:2013-10-15 21:29:38
【问题描述】:
好的,所以我一直在将创可贴放在创可贴之上,通过简单的 sn-p 代码来获取要发送的电子邮件。我一直在尝试做的是通过 Outlook 发送一封电子邮件。我的第一个问题是runtime object define 287,位于以下行:
Set appOutlookRec = appOutlookMsg.Recipients.Add
为了反驳我添加的:
Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
这就停止了。现在电子邮件将形成,我可以使用.display 来查看我的电子邮件,但是当我尝试使用.send 时,Outlook 实例会在电子邮件实际发送之前关闭。
为了反驳我强制打开 Outlook,但我想检查一个实例是否已经打开。打开我使用的收件箱:
Set appOutlook = CreateObject("Outlook.Application")
Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
olFolder.Display
我是否过度复杂了自动化过程?或者我是否走在正确的道路上,有人可以帮助检查是否在资源管理器窗口中打开了 Outlook 实例?
谢谢
更新
Const olMailItem = 0
Const olTo = 1
Const olCC = 2
Const olFolderInbox = 6
Dim appOutlook As Object
Dim appOutlookMsg As Object
Dim appOutlookRec As Object
Dim objNS As Object
Dim olFolder As Object
Set appOutlook = CreateObject("Outlook.Application")
Set objNS = appOutlook.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
olFolder.Display
'Create a new empty email message
Set appOutlookMsg = appOutlook.CreateItem(olMailItem)
With appOutlookMsg
Set appOutlookRec = appOutlookMsg.Recipients.Add("....@gmail.com")
appOutlookRec.Type = olTo
.Subject = "Testing Closed Tickets"
.Body = "This is just a test."
'.Display
.Send
End With
Set appOutlookMsg = Nothing
Set appOutlook = Nothing
Set appOutlookRec = Nothing
【问题讨论】:
-
你试过
.Save.Send之前的电子邮件吗? -
好消息(但奇怪)! Outlook 是唯一的 Office 应用程序,
= CreateObject("Outlook.Application")将在其不存在时创建实例或使用现有实例(如果 Outlook 已在运行)。 -
你能把你的整个代码贴出来吗?您是从 Outlook 还是其他来源(我假设是 MS Access)运行此代码?通过在 Access 中引用 Outlook 运行时库,您可以让生活变得更轻松
-
我要提到@tbur,我以为我在其他地方读过,但正在尝试验证:) PowerPoint 也是如此。
-
@DavidZemens 效果很好。现在我不必使用
olFolder.Display在资源管理器中打开实例。如果你真的想把它写成答案,我很乐意接受。
标签: vba ms-access outlook-2010