自动连接到MS Excel,并使用Excel VBA检查未读的电子邮件

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

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

用户A有一个Excel表格的Excel工作簿。 用户B将定期向用户A的Outlook帐户发送文档。

我的要求是通过使用macros给用户A 2个选项。

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

这是通过:

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

我已经使用下面的代码成功完成了这个。

Sub Open_Outlook() ' This Macro Opens Microsoft Outlook ' Runs an executable program Shell ("OUTLOOK") End Sub 

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

这是通过:

  1. 创build一个连接到Outlook。

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

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 

结束小组

当我运行第二个选项的代码时出现错误。

运行时错误429:活动X组件不能创build对象。

这是什么意思?

如何更改代码以摆脱错误并成功运行它?

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

 Const olFolderInbox = 6 

或者简单地用Set oOlInb行中的6replace它