启动Outlook 2013时,新的Outlook.Application会引发错误429

时间:2014-05-28 18:04:38

标签: vba outlook outlook-vba

我在启动Outlook 2013时收到错误429'Active X Component无法创建对象'。调试时我发现它发生在Set oOutlook = New Outlook.Application。但是当我在Outlook启动后运行代码时它运行正常。知道为什么会这样吗?

Option Explicit
Private WithEvents oOutlook As Outlook.Application

Private WithEvents oMailItems As Outlook.Items
Private ns As NameSpace
Private Inbox As MAPIFolder
Private InboxItems As Outlook.Items
Private FailNotice As MAPIFolder
Private zsForwardTo As String

Private Sub Class_Initialize()
    Set ns = GetNamespace("MAPI")
    Set Inbox = ns.GetDefaultFolder(olFolderInbox)
    Set InboxItems = Inbox.Items

    Set oOutlook = New Outlook.Application

    Set oMailItems = oOutlook.Session.GetDefaultFolder(olFolderInbox).Items
    Set FailNotice = Inbox.Folders("Fail Notices")
End Sub

1 个答案:

答案 0 :(得分:1)

根据Max的评论,我想发一个答案,因为这真的很有帮助,我在网络上的任何其他地方找不到这个。 Max写道:

  

我有一个类似的问题,我认为Outlook在创建新实例时遇到问题,而它本身并未完全启动。最后,我没有创建一个新的应用程序,但在现有的应用程序中工作。

我不知道如何使用现有的应用程序,但我得到了这样的工作:oOutlook变量现在是不必要的,可以用简单的单词“Application”代替。修改后的代码如下所示:

Option Explicit
Private WithEvents oMailItems As Outlook.Items
Private ns As NameSpace
Private Inbox As MAPIFolder
Private InboxItems As Outlook.Items
Private FailNotice As MAPIFolder
Private zsForwardTo As String

Private Sub Class_Initialize()
    Set ns = GetNamespace("MAPI")
    Set Inbox = ns.GetDefaultFolder(olFolderInbox)
    Set InboxItems = Inbox.Items

    Set oMailItems = Application.Session.GetDefaultFolder(olFolderInbox).Items
    Set FailNotice = Inbox.Folders("Fail Notices")
End Sub