【问题标题】:Error While Sending Email through Outlook from Excel VBA从 Excel VBA 通过 Outlook 发送电子邮件时出错
【发布时间】:2016-01-18 17:46:07
【问题描述】:

我在outlook和excel vba中写了一个宏,描述如下: 1. 如果电子邮件主题行匹配,则在 Outlook 中打开 Excel 文件的代码:

Private Sub Items_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is Outlook.MailItem Then
        '// Subject line here
        If InStr(Item.Subject, "Run Dashboard") Then
            Call openExcel
        End If
    End If
End Sub

打开 Excel 并运行仪表板后,必须通过 excel 发送电子邮件。

vba 和代码:

Dim outapp As Object
Dim nmail As Object

Set outapp = CreateObject("Outlook.Application")
Set nmail = outapp.CreateItem(0)
With nmail
    .To = "xxxxxx@xxxx.com"
    .cc = ""
    .bcc = ""
    .Subject = flname
    .htmlbody = RangetoHTML(Range("A1:" & Split(Cells(, lastcol1).Address, "$")(1) & lastrow1))
    .attachments.Add ActiveWorkbook.FullName
    .display
End With

On Error GoTo 0

Set nmail = Nothing

Set outapp = Nothing

现在我面临Set outapp = CreateObject("Outlook.Application") 的错误 此错误仅在我通过第 1 点中提到的 Outlook 电子邮件打开 excel 文件时显示,如果我以正常方式打开文件,即没有 Outlook 帮助,则代码运行成功。

请帮忙。

提前致谢

【问题讨论】:

  • 而不是Dim outapp as object 你试过Dim outapp as outlook.Application 和Dim nmail as outlook.MailItem 还检查是否包含Microsoft Outlook 参考
  • 感谢这个工作:)
  • 现在在 excel vba 中出现“Set nmmail = outapp.CreateItem(olMailItem)”错误

标签: excel vba outlook


【解决方案1】:

为什么需要从 Outlook 自动化 Excel,然后从 Excel 自动化 Outlook?

 Set outapp = CreateObject("Outlook.Application")

相反,您可以获得正在运行的 Outlook 实例(如果有),因为只能同时运行一个 Outlook 实例。请参阅How to automate Outlook from another program 和GetObject and CreateObject behavior of Office automation servers 了解更多信息。

尝试改用以下代码行:

 Set nmail = Application.CreateItem(olMailItem)

如果您在 Outlook 中配置了多个配置文件,您很可能需要使用命名空间类的 Logon 方法。

【讨论】:

  • 我认为“Set nmmail = Application.CreateItem(olMailItem)”只能在我在 Outlook 中使用此代码而不是在 excel 中使用时使用,我在 excel vba 中出现错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 2018-05-24
相关资源
最近更新 更多