自动连接到ms excel并使用excel vba检查未读电子邮件

时间:2015-02-20 04:13:26

标签: excel vba excel-vba outlook

我正在做一个基于excel-vba的项目。

有2个用户。用户A和用户B

用户A有一个带有表格的Excel工作簿。用户B将通过电子邮件发送  定期向用户A的Outlook帐户提供文件。

我的要求是使用宏为用户A提供2个选项。

选项1:手动检查是否有特定的未读电子邮件  用户。

这是通过以下方式完成的:

从excel工作簿中打开Outlook,然后用户A可以手动搜索Outlook帐户。

我已使用以下代码成功完成此操作。

    Sub Open_Outlook()

    ' This Macro Opens Microsoft Outlook
    ' Runs an executable program

    Shell ("OUTLOOK")

    End Sub

选项2:自动检查是否有来自特定用户的未读电子邮件。

这是通过以下方式完成的:

  1. 创建与Outlook的连接。

  2. 检查是否有任何未读电子邮件。

  3. Sub ExtractFirstUnreadEmailDetails()

    Dim oOutlook As Object
    Dim oOlns As Object
    Dim oOlInb As Object
    
    
    '~~> Get Outlook instance
    Set oOutlook = GetObject(, "Outlook.Application")
    Set oOlns = oOutlook.GetNamespace("MAPI")
    Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
    
    '~~> Check if there are any actual unread emails
    If oOlInb.Items.Restrict("[UnRead] = True").Count = 0 Then
        MsgBox "NO Unread Email In Inbox"
        Exit Sub
    End If
    

    End Sub

    我在运行第二个选项的代码时遇到错误。

    运行时错误429:Active X组件无法创建对象。

    这是什么意思?

    如何更改代码以消除错误并成功运行?

1 个答案:

答案 0 :(得分:0)

olFolderInbox是一个仅Outlook的常量在VBA中将它定义为常量,如下所示:

Const olFolderInbox = 6

或者只需在Set oOlInb行中将其替换为6