我没有运气以编程方式在显示Outlook之前将其关闭。

Private Sub Application_Reminder(ByVal Item As Object)
    Dim objRem As Reminder
    Dim objRems As Reminders
    If Item.Subject = "TESTING" Then
        'downloadAndSendSpreadReport
        Set objRems = Application.Reminders
        i = 0
        For Each objRem In objRems
            i = i + 1
            If objRem.Caption = "TESTING" Then
                objRems.Remove i
                If objRem.IsVisible Then
                    objRem.Dismiss
                End If
                Exit For
            End If
        Next objRem
        Item.ReminderSet = False
        Item.Delete
        'Item.Dismiss
    End If
End Sub

我想将此约会项目用作某些宏的触发器,而无需用户手动消除提醒。

在我看来,触发此事件时,提醒项不可见,因此无法将其删除

我试图将其从提醒集中删除,但这似乎从我的日历中删除了整个事件。另外,它仍会显示不是ASCII的STRANGE TITLE提醒。

我试图将约会项的hinterSet属性设置为false,该提示属性仍然弹出。

因此,我在寻找,以便a)在提醒自动弹出之前将其关闭/b)。自动弹出提醒后将其关闭...。或在Outlook中执行计划的MACRO的任何解决方法。
(请注意,我无权在Windows或VBS中使用计划的作业。)

更新:

现在,我有以下代码。该提醒已被删除,但仍会弹出带有诸如“没有约会/提醒”之类标题的提醒窗口。

在Reminder Object isVisible = true的意义上,beforeReminderShow事件很有用。

这样我就可以解散了..但是,即使有0个事件,提醒窗口也将继续弹出。
Private WithEvents olRemind As Outlook.Reminders
Private Sub olRemind_BeforeReminderShow(Cancel As Boolean)
Set objRems = Application.Reminders
    For Each objRem In objRems
        If objRem.Caption = "TESTING" Then
            If objRem.IsVisible Then
                objRem.Dismiss
            End If
            Exit For
        End If
    Next objRem

End Sub

[已解决]-最终编辑
最终解决方案可行(我将其放置在“ThisOutlookSession”模块中)。
希望这对其他人有帮助。
' declare this object withEvents displaying all the events
Private WithEvents olRemind As Outlook.Reminders
Private Sub Application_Reminder(ByVal Item As Object)
    Set olRemind = Outlook.Reminders
    ' RUN OTHER MACRO HERE
End Sub

Private Sub olRemind_BeforeReminderShow(Cancel As Boolean)

    For Each objRem In olRemind
        If objRem.Caption = "TESTING" Then
            If objRem.IsVisible Then
                objRem.Dismiss
                Cancel = True
            End If
            Exit For
        End If
    Next objRem

End Sub

最佳答案

我知道如何执行此操作的唯一方法如下。

您需要在模块/类的顶部:

Private WithEvents olRemind As Outlook.Reminders

然后,当您获取Outlook对象时,您需要执行以下操作:
Set olRemind = olApp.Reminders

其中olApp是您的Outlook Application对象。

现在,在您的代码中,您需要发生以下事件:
Private Sub olRemind_BeforeReminderShow(Cancel As Boolean)

WithEvents放在顶部之后,您将能够看到所有可以使用的事件。

现在您可以取消此事件,因此看不到提醒窗口。

关于vba - 取消Outlook提醒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13283989/

10-12 16:47