2012-11-08 37 views
5

Tôi không có may mắn loại bỏ cảnh báo Outlook theo chương trình trước khi nó hiển thị.Loại bỏ lời nhắc 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 

Tôi muốn sử dụng mục cuộc hẹn này làm trình kích hoạt cho một số macro mà không cần người dùng bỏ qua lời nhắc theo cách thủ công.

Dường như với tôi, khi sự kiện này được kích hoạt, các mục nhắc nhở là không nhìn thấy được, do đó không thể bị miễn nhiệm

tôi đã cố gắng để loại bỏ nó ra khỏi nhắc nhở được cài nhưng điều này dường như xóa toàn bộ sự kiện từ lịch của tôi. Ngoài ra, nó sẽ vẫn hiển thị lời nhắc STRANGE TITLE không có trong ASCII.

Tôi mệt mỏi khi đặt thuộc tính remindSet của mục cuộc hẹn thành false, thuộc tính nhắc nhở vẫn bật lên.

Vì vậy, tôi đang tìm kiếm một cách để a) loại bỏ lời nhắc trước khi tự động bật/b). loại bỏ lời nhắc sau khi nó tự động xuất hiện .... hoặc bất kỳ cách giải quyết nào để thực hiện một MACRO được lên lịch trong Outlook. (. Xin lưu ý rằng tôi không được phép sử dụng công việc theo lịch trình trong Windows cũng không VBS)

Cập nhật:

Bây giờ tôi có đoạn mã sau. Lời nhắc đang được xóa, nhưng nó sẽ vẫn bật ra một cửa sổ nhắc nhở với chú thích như "Không có cuộc hẹn/nhắc nhở" một cái gì đó như thế này.

Sự kiện beforeReminderShow rất hữu ích trong ý nghĩa các Reminder Object isVisible = true

vì vậy tôi có thể bỏ ra .. nhưng các cửa sổ nhắc nhở sẽ tiếp tục bật lên ngay cả khi có 0 sự kiện.

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 

[Solved] chỉnh sửa thức Các giải pháp cuối cùng hoàn toàn khả thi (tôi đặt trong "ThisOutlookSession" Module) Hope this helps khác

' 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 

Trả lời

3

Cách duy nhất tôi biết làm thế nào để làm điều này là như sau.

Bạn cần điều này ở phía trên cùng của mô-đun của bạn/lớp

Private WithEvents olRemind As Outlook.Reminders 

Sau đó, khi bạn nhận được Outlook của bạn đối tượng bạn cần phải làm điều này

set olRemind = olApp.Reminders 

đâu olApp là đối tượng Outlook ứng dụng của bạn.

Bây giờ trong mã của bạn, bạn cần phải có sự kiện này

Private Sub olRemind_BeforeReminderShow(Cancel As Boolean) 

Khi bạn đặt WithEvents ở phía trên sau đó bạn sẽ có thể xem tất cả các sự kiện mà bạn có thể sử dụng.

Bây giờ bạn có thể hủy sự kiện này và do đó không thấy cửa sổ lời nhắc.

+0

tôi sẽ cung cấp cho nó một thử hôm thứ Hai, Cảm ơn nâng cao. Tôi không thể tìm ra sự kiện. Cảm ơn! – Larry

+0

Sau khi đọc câu hỏi của bạn một lần nữa, tôi nghĩ rằng bạn sẽ phải làm một sự kết hợp của những gì bạn đã có và đề nghị của tôi. Tôi đang nghĩ đến trường hợp bạn muốn xóa lời nhắc nhưng người dùng có lời nhắc khác. Trong trường hợp này, bạn loại bỏ của bạn và sau đó để cho cửa sổ nhắc nhở hiển thị. Nếu bạn là lời nhắc nhở duy nhất thì bạn sẽ sử dụng sự kiện mà tôi đã gợi ý để ngăn chặn cửa sổ hiển thị. – darbid

+0

Xin chào @darbid Vui lòng xem chỉnh sửa của tôi về câu hỏi. Cảm ơn – Larry

2

nếu bạn muốn bỏ tất cả những lời nhắc nhở, bạn có thể simplye thực hiện đoạn mã sau:

khai báo đối tượng này withEvents hiển thị tất cả các sự kiện

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) 

Cancel = True   

End Sub 
+0

THanks @sparksustc, tôi đã đăng phiên bản hoàn toàn khả thi cuối cùng của tôi vào cuối câu hỏi của tôi. nhưng câu trả lời của bạn là việc thực hiện thực tế câu trả lời của darbid ở trên. – Larry

Các vấn đề liên quan