自动连接到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:自动检查是否有来自特定用户的未读电子邮件。
这是通过:
-
创build一个连接到Outlook。
-
检查是否有未读的电子邮件。
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它