Problem jest trywialny w swojej naturze, ale trudny w praktyce. Otóż Kerio Connect posiada własne mechanizmy reguł - co więcej: nie integrują się zupełnie z Outlookiem! Mało tego! Po zainstalowaniu w Outlooku Kerio Connector'a reguły Outlook'owe nie potrafią już się uruchamiać automatycznie - gdy uruchomimy je ręcznie jest OK.
Jak więc zaradzić takim wdrożeniem, gdzie wielu użytkowników posiada zdefiowanych wiele swoich reguł Outlook'owych?
Kerio zaleca przepisanie reguł do ich mechanizmu - reguły te wtedy działają po stronie serwera, dzięki czemu działają nawet wtedy kiedy użytkownik nie korzysta z programu pocztowego. Co więcej - nawet gdy się użytkownik loguje przez WebMail'a to także reguły Kerio obsługują skrzynkę według zdefiniowanych zasad. Reguły te więc są wyśmienitym pomysłem na organizację naszych skrzynek odbiorczych.
Problem pojawia się jednak, gdy chcemy cześć poczty przenosić (przy pomocy reguł) do swoich plików PST - regułami Kerio tego już nie obsłużymy! Trudno więc się dziwić, że nasze oczy znowu kierują się ku regułom Outlook'owym. Pozostaje jednak jeden problem: co zrobić aby te reguły działały automatycznie?
Z pomocą przychodzi nam zapomniana już funkcjonalność produktów pakietu Office: makra.
Idea jest prosta: uruchomić wszystkie reguły w okreslonym czasie - przy uruchomieniu Outlooka lub np. przy nadejciu nowej wiadomości.
Podaję kilka przykładów takich rozwiązań:
Uruchomienie makra podczas uruchomienia Outlooka:
Code:
Private Sub Application_MAPILogonComplete()
Call your macro1
Call your macro2
End Sub
lub
Code:
Private Sub Application_Startup()
Call your macro1
Call your macro2
End Sub
Przykład makra uruchamiającego wszystkie reguły:
Code:
Sub RunAllInboxRules()
Dim st As Outlook.Store
Dim myRules As Outlook.Rules
Dim rl As Outlook.Rule
Dim count As Integer
Dim ruleList As String
'On Error Resume Next
' get default store (where rules live)
Set st = Application.Session.DefaultStore
' get rules
Set myRules = st.GetRules
' iterate all the rules
For Each rl In myRules
' determine if it's an Inbox rule
If rl.RuleType = olRuleReceive Then
' if so, run it
rl.Execute ShowProgress:=True
count = count + 1
ruleList = ruleList & vbCrLf & rl.Name
End If
Next
' tell the user what you did
ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules"
Set rl = Nothing
Set st = Nothing
Set myRules = Nothing
End Sub
Gdybyście chcieli rozwinąć temat, to polecam "wójka googla" - jest tam masa przykładów. :)