2011-11-21 69 views
0

通过Outlook Interop库从MS Access(2007)运行它。我从一个用户帐户上的星号行得到错误-2147221219(8004011d),但在另一个用户帐户上没有。错误似乎与权限相关,并且这两个帐户都对帐户具有完全访问权限,该帐户是我试图打开的日历,可以通过Outlook打开并创建约会。示例代码运行时错误与NS.GetSharedDefaultFolder方法

Public Function NewApt(MtgDate As Date, Cat As String) 

Dim objOLApp As Outlook.Application 
Dim objNS As Outlook.Namespace 
Dim objCalendar As Outlook.Folder 
Dim NewMtg As Outlook.AppointmentItem 
Dim Org As Outlook.Recipient 

Set objOLApp = New Outlook.Application 
Set objNS = objOLApp.GetNamespace("MAPI") 
Set Org = objNS.CreateRecipient("[email protected]") 
Org.Resolve 
If Org.Resolved Then 
    ** Set objCalendar = objNS.GetSharedDefaultFolder(Org, olFolderCalendar) 
Else 
    MsgBox "Scheduling User failed to resolve, see Crimius." 
    Exit Function 
End If 
... 

任何想法为什么?

+0

你试过'objNS.Logon'吗? – Fionnuala

+0

我的理解是,登录方法会劫持现有会话并更改其工作配置文件,因此我们决定尝试避免这种情况(因为我们的几个用户喜欢打开40个Outlook邮件,然后抱怨他们的系统速度很慢)。这不是这种情况吗? – Crimius

+0

不,如果Outlook刚刚启动,登录将登录到配置文件。如果它已经在运行,它什么都不会做。其次,尝试将两个邮箱添加为代理存储(Exchange帐户属性对话框的高级选项卡)。你可以浏览两个邮箱吗? –

回答

-1

也许,Outlook-Datafile受密码保护。 切换到Outlook,输入Outlook容器的密码,然后重试。

0

我知道可能会出现此错误的一个原因。 WHE您使用GetSharedDefaultFolder方法和参数1(收件人)收件人从全局地址列表中隐藏可能会出现这样的错误:

COMException (0x8004011D): 
The operation failed because of a registry or installation problem. Restart Outlook and try again. If the problem persists, reinstall. 
-2

我有完全一样的问题。几年来一直运行的VBA模块突然拒绝。经过验证,事实证明,内部电子邮件地址更改为以前的宏运行...

更改为电子邮件地址解决了问题。