我最近从Office 13(独立的32位)迁移到Office 16(Office 365,64位)和我现有的Excel宏之一,该宏可访问Outlook并计算活动提醒的数量。 Outlook提醒集合-失败:
运行时错误424:需要对象
此宏在迁移之前运行良好,并且使用与Microsoft关于Outlook的提醒对象(https://docs.microsoft.com/en-us/office/vba/api/outlook.reminders)上的Microsoft文档中的代码示例相同的构造。
在尝试解决我的问题之前,请不要担心:我编写了可以正常工作的新代码(请参见下文)。我最初的想法是,它是不受信任的,因此我尝试为VBA项目添加一个自我证书,但这没有任何作用。我得出的结论是,由于某种原因,即使我以前在很多循环中都使用过此构造,现在仍需要设置Reminder的值。我写的有效代码似乎证明了这一点,该代码显式设置了Reminder值。
两个代码集都具有以下Dim声明(问题不在此处):
Dim ReminderSet As Outlook.Reminders
Set ReminderSet = oOutlook.Reminders
Dim TotalReminders As Integer
TotalReminders = ReminderSet.Count
Dim Reminder As Outlook.Reminder
Dim ActiveReminderCount As Integer
ActiveReminderCount = 0
失败的代码(但曾经可以使用,并且看起来像Microsoft文档中的代码一样):
If TotalReminders > 0 Then
For Each Reminder In ReminderSet 'This is the line on which it fails
If Reminder.IsVisible = True Then ActiveReminderCount = ActiveReminderCount + 1
Next Reminder
End If
有效的代码:
If TotalReminders > 0 Then
Dim i As Integer
For i = 1 To TotalReminderSet
Set Reminder = ReminderSet(i)
If Reminder.IsVisible = True Then ActiveReminderCount = ActiveReminderCount + 1
Next i
End If
虽然我有解决方案,但我发现新代码更麻烦。我想确切了解Office 2013之间的变化,以及是否有一种旧代码可以工作的方式(稍作修改)。
我浏览了“ What's new for VBA in Office 2016”文档,但没有发现我希望引起这种行为改变的内容。
我的问题是: