Vba &引用;运行时错误'-1698234242(9ac7007e)和#x27;自动错误循环通过存储

Vba &引用;运行时错误'-1698234242(9ac7007e)和#x27;自动错误循环通过存储,vba,outlook,Vba,Outlook,我不知道这是什么: “运行时错误“-1698234242(9ac7007e)” 自动化错误 在下一个oStore中停止 我查阅了所有的参考资料 “共享收件箱”的名称为“工作组”: Public Sub-NewInbox_Su() 将myNameSpace设置为Outlook.NameSpace 与Outlook.Store一样暗显oStore 将我的收件箱暗显为Outlook.Folder 将myItem设置为MailItem 暗计数等于长 设置myNameSpace=Application.G

我不知道这是什么:

“运行时错误“-1698234242(9ac7007e)”
自动化错误

在下一个oStore中停止

我查阅了所有的参考资料

“共享收件箱”的名称为“工作组”:

Public Sub-NewInbox_Su()
将myNameSpace设置为Outlook.NameSpace
与Outlook.Store一样暗显oStore
将我的收件箱暗显为Outlook.Folder
将myItem设置为MailItem
暗计数等于长
设置myNameSpace=Application.GetNamespace(“MAPI”)
对于myNameSpace.Stores中的每个oStore
如果oStore.DisplayName=“工作组”,则
设置myInbox=oStore.GetRootFolder.folders(“收件箱”)
MsgBox myInbox.UnReadItemCount
如果myInbox.UnReadItemCount>0,则
对于lngCount=myInbox.items.Count,将计数设为1步骤-1
如果TypeName(myInbox.items(lngCount))=“MailItem”,则
如果myInbox.items(lngCount).UnRead=True,则
设置myItem=myInbox.items(lngCount)
如果仪表(LCase(myItem.Body),“报警”)>则
myItem.Categories=“红色类别”
我的项目。保存
myItem.UnRead=False
如果结束
如果结束
如果结束
多芬特
下一个lngCount
如果结束
退出
如果结束
下口造口术**
Set oStore=无
设置myNameSpace=Nothing
设置myInbox=Nothing
设置myItem=Nothing
端接头

我遇到了完全相同的问题,但错误信息略有不同

当我尝试遍历时:

Sub CheckEmails    
On Error GoTo Errors

For Each Mailbox in Application.Session.Stores
    'Do some stuff with the emails in that mailbox
Next Mailbox
Exit Sub

Errors:
'My Error handling code
这对我安装它的3个人来说效果很好,但有一台电脑在“下一个邮箱”行中生成错误:

自动化错误:-1110179567(bdd40111)

这是我以前从未见过的,在谷歌上没有任何点击率,我也无法解析错误描述…我检查了与其他3台机器匹配的VBA引用,检查了所有宏权限等。一切都正常

在@Absince对这个问题发表了慷慨的评论后,我有点发疯,结结巴巴地问了一下,我把代码改为:

Sub CheckEmails
On Error GoTo Errors

Dim Mailbox as Object
For x = Application.Session.Stores.Count To 1 Step -1
    Set Mailbox = Application.Session.Stores(x)
    'Do some stuff with the emails in that mailbox
Next x
Exit Sub

Errors:
'My Error handling code
这仍然不起作用,但确实在“Set Mailbox=…”行上给了我一条不同的错误消息,在尝试打开用户的一个共享邮箱时,我能够将其解析为“权限被拒绝”类型的错误描述

没错,当我尝试在Outlook中打开该特定共享邮箱时,我无法打开。碰巧,我的系统管理员在Exchange服务器上禁用了该共享邮箱,而没有通知在Outlook中打开该邮箱的用户

因此,我修改了代码,以便能够处理Outlook中已打开但由于某种原因无法访问的会话存储,这是一种有点欺骗的方式,只要在尝试访问该存储时忽略任何错误即可:

Sub CheckEmails
On Error GoTo Errors

Dim Mailbox as Object
For x = Application.Session.Stores.Count To 1 Step -1
    Set Mailbox = Nothing
    On Error Resume Next
    Set Mailbox = Application.Session.Stores(x)
    On Error GoTo Errors
    If Mailbox Is Nothing Then GoTo SkipMailbox        
    'Do some stuff with the emails in that mailbox
SkipMailbox:
Next x
Exit Sub

Errors:
'My Error handling code

即使用户的Outlook中加载了一个“已损坏”的共享邮件帐户(Outlook会话存储),这项功能现在仍然有效,这似乎是导致我的“自动化错误”的原因“尝试在循环中使用该存储时。现在,如果我们遇到一个由于错误而无法分配给对象的存储,它只会跳过它。

我遇到了完全相同的问题,但错误消息略有不同

当我尝试遍历时:

Sub CheckEmails    
On Error GoTo Errors

For Each Mailbox in Application.Session.Stores
    'Do some stuff with the emails in that mailbox
Next Mailbox
Exit Sub

Errors:
'My Error handling code
这对我安装它的3个人来说效果很好,但有一台电脑在“下一个邮箱”行中生成错误:

自动化错误:-1110179567(bdd40111)

这是我以前从未见过的,在谷歌上没有任何点击率,我也无法解析错误描述。。。我检查了与其他3台机器匹配的VBA引用,检查了所有宏权限等。一切正常

在@Absince对这个问题发表了慷慨的评论后,我有点发疯,结结巴巴地问了一下,我把代码改为:

Sub CheckEmails
On Error GoTo Errors

Dim Mailbox as Object
For x = Application.Session.Stores.Count To 1 Step -1
    Set Mailbox = Application.Session.Stores(x)
    'Do some stuff with the emails in that mailbox
Next x
Exit Sub

Errors:
'My Error handling code
这仍然不起作用,但确实在“Set Mailbox=…”行上给了我一条不同的错误消息,在尝试打开用户的一个共享邮箱时,我能够将其解析为“权限被拒绝”类型的错误描述

没错,当我试图在Outlook中打开特定的共享邮箱时,我无法打开。碰巧,我的系统管理员禁用了Exchange服务器上的共享邮箱,但没有通知在Outlook中打开该邮箱的用户

因此,我修改了代码,以便能够处理Outlook中已打开但由于某种原因无法访问的会话存储,这是一种有点欺骗的方式,只要在尝试访问该存储时忽略任何错误即可:

Sub CheckEmails
On Error GoTo Errors

Dim Mailbox as Object
For x = Application.Session.Stores.Count To 1 Step -1
    Set Mailbox = Nothing
    On Error Resume Next
    Set Mailbox = Application.Session.Stores(x)
    On Error GoTo Errors
    If Mailbox Is Nothing Then GoTo SkipMailbox        
    'Do some stuff with the emails in that mailbox
SkipMailbox:
Next x
Exit Sub

Errors:
'My Error handling code

现在,即使用户的Outlook中加载了一个“已损坏”的共享邮件帐户(Outlook会话存储),这也能正常工作,这似乎是在尝试在循环中使用该存储时导致我的“自动错误”的原因。现在,如果我们遇到一个由于错误而无法分配给对象的存储,它只会跳过它。

欢迎使用。你在哪一行得到错误?另外,我假设
**Next-oStore**
实际上就是
Next-oStore
?@苦艾酒是的,我用粗体写了它,表示它就停在那里。我不知道问题出在哪里。。。我用其他宏检查了收件箱中的可用存储,发现了类似的错误。我认为问题不在代码中。。。但我找不到解决方案。自动化错误通常意味着程序不再有与变量关联的对象。我不知道为什么在执行过程中会丢失文件夹,或者这是问题所在,但是您可以使用
检查如果oStore不存在,那么
@苦艾酒我使用此代码列出存储,但我收到此错误:运行时错误-941162370(c7e7007e)自动化错误子测试()将myNameSpace设置为Outlook.NameSpace将oStore设置为Outlook.Store设置为my