2009-10-20 81 views
1

我有一个Outlook VBA脚本调用自定义DLL以执行特定功能。该程序集编译为COM可见,但由于依赖关系众多而未命名,因此未在GAC中注册。为了解决这个问题,我只是简单地将程序集和它的依赖关系放在适当的程序文件位置,这些位置在Outlook中找到它们。没问题。Outlook VBA脚本失败,空引用错误,但对象不为空

问题是我的脚本执行时,它抛出以下错误:

Run-time error '-2147467261 (80004003)' object reference not set to an instance of an object

下面的代码:

Sub ProcessEmails(Item As Outlook.MailItem) 
    Dim oWikiPosterTool 
    Set oWikiPosterTool = CreateObject("WikiScript.WikiPoster") 

    Dim strID As String 
    Dim objMail As Outlook.MailItem 

    strID = Item.EntryID 
    Set objMail = Application.Session.GetItemFromID(strID) 

    Call oWikiPosterTool.PostMailItem(objMail.Body, objMail.SenderEmailAddress, objMail.SentOn) 
End Sub 

基本上,组件(C#)处理过帐数据达维基。我只是试图将电子邮件中的基本信息传递给组装方法,以便它能够完成工作。但是,当Outlook子项到达Call线时,它会抛出错误。

奇怪的是,当我检查涉及的对象时,没有一个是空的。

ISNULL(oWikiPosterTool)返回False
ISNULL(objMail)返回False
等等...

这是错误告诉我,我的组件有一个问题,或者是它的一个问题脚本呢?免责声明:我对VBA几乎一无所知,并且尽我所能将它们一起砍成了碎片。

谢谢!

回答

0

我想通了 - 这是COM程序集抛出错误。