Trong ms outlook có tính năng "Rules and Alerts" nhằm thiết lập Rule cho Email. Chọn check hoặc uncheck vào Rule nếu muốn Enable hoặc Disable Rule. Tuy nhiên, ms outlook không cho phép chúng ta muốn thiết lập chế độ tự động Enable hoặc Disable Rule theo thời gian. Muốn đáp ứng nhu cầu trên, xin chia sẻ bài viết hướng dẫn thực hiện bằng VBA kết hợp với chế độ Reminder có sẵn của ms outlook.
Lưu ý: Chương trình chỉ chạy khi Outlook được mở.
Bước 1: Hãy tạo Task với subject là "Disable Rule", "Enable Rule" và thiết lập Reminder time.
Bước 2: Tạo Script sau
Bấm Alt+F11 để mở VBA Editor và paste đoạn code sau vào phần "ThisOutlookSession".
Private Sub Application_Reminder(ByVal Item As Object) If Item.MessageClass <> "IPM.Task" Then Exit Sub End If If Item.Subject = "Enable Rule" Then Enable_Run_Rule End If If Item.Subject = "Disable Rule" Then Disable_Run_Rule End If End Sub ' Macro to enable a rule Sub Enable_Run_Rule() Dim olRules As Outlook.Rules Dim olRule As Outlook.Rule Dim intCount As Integer Dim blnExecute As Boolean Set olRules = Application.Session.DefaultStore.GetRules Set olRule = olRules.Item("Your Rule Name") olRule.Enabled = True If blnExecute Then olRule.Execute ShowProgress:=True olRules.Save Set olRules = Nothing Set olRule = Nothing End Sub ' Macro to disable a rule Sub Disable_Run_Rule() Dim olRules As Outlook.Rules Dim olRule As Outlook.Rule Dim intCount As Integer Dim blnExecute As Boolean Set olRules = Application.Session.DefaultStore.GetRules Set olRule = olRules.Item("Your Rule Name") olRule.Enabled = False If blnExecute Then olRule.Execute ShowProgress:=True olRules.Save Set olRules = Nothing Set olRule = Nothing End Sub
Trường hợp muốn thiết lập cho nhiều Rule cùng lúc
Chúng ta có thể áp dụng cho nhiều Rule, tuy nhiên trong trường hợp này phải chỉ định (assign) Rule cho Categories đặt tên là "Enable Rule" hoặc "Disable Rule" cho từng Task.
Private Sub Application_Reminder(ByVal Item As Object)
Dim strRule As String
If Item.MessageClass <> "IPM.Task" Then
Exit Sub
End If
strRule = Item.Subject
If Item.Categories = "Enable Rule" Then
Run_Rule strRule, 1
End If
If Item.Categories = "Disable Rule" Then
Run_Rule strRule, 0
End If
End Sub
Function Run_Rule(rule_name As String, tf As Boolean) As Boolean
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Dim blnExecute As Boolean
Set olRules = Application.Session.DefaultStore.GetRules
Set olRule = olRules.Item(rule_name)
olRule.Enabled = tf
If blnExecute Then olRule.Execute ShowProgress:=True
olRules.Save
Set olRules = Nothing
Set olRule = Nothing
End Function
Nguồn: http://www.slipstick.com/developer/enable-or-disable-rule-using-reminder-and-vba/

No comments:
Post a Comment