11

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 リマインダーも表示されます。

予定アイテムのreminderSetプロパティをfalseに設定しようとしましたが、リマインダー プロパティがまだポップアップします。

そのため、a) 自動的にポップする前にリマインダーを閉じる/ b) 方法を探しています。リマインダーが自動的にポップされた後、リマインダーを閉じます....または、Outlook でスケジュールされた MACRO を実行するための回避策。(Windows や VBS でスケジュールされたジョブを使用する権限がないことに注意してください。)

アップデート:

今、私は次のコードを持っています。リマインダーは削除されますが、「予定/リマインダーはありません」のようなキャプションが表示されたリマインダー ウィンドウが表示されます。

beforeReminderShow イベントは、Reminder オブジェクトが isVisible = true であるという意味で役立ちます。

だから私は却下することができます..しかし、リマインダーウィンドウは、イベントが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
4

2 に答える 2

5

これを行う方法を私が知っている唯一の方法は次のとおりです。

モジュール/クラスの上部にこれが必要です。

Private WithEvents olRemind As Outlook.Reminders

次に、Outlookオブジェクトを取得したら、次のことを行う必要があります。

Set olRemind = olApp.Reminders

olAppOutlookアプリケーションオブジェクトはどこにありますか。

今あなたのコードであなたはこのイベントを持っている必要があります:

Private Sub olRemind_BeforeReminderShow(Cancel As Boolean)

を一番上に置くと、WithEvents使用できるすべてのイベントを表示できるようになります。

これで、このイベントをキャンセルできるため、リマインダーウィンドウは表示されません。

于 2012-11-09T10:13:08.557 に答える