我正在做一个基于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:自动检查是否有来自特定用户的未读电子邮件。
这是通过以下方式完成的:
创建与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
End Sub
我在运行第二个选项的代码时遇到错误。
运行时错误429:Active X组件无法创建对象。
这是什么意思?
如何更改代码以消除错误并成功运行?
答案 0 :(得分:0)
olFolderInbox是一个仅Outlook的常量在VBA中将它定义为常量,如下所示:
Const olFolderInbox = 6
或者只需在Set oOlInb行中将其替换为6