Automatische antwoorden /afwezigheidsassistent

Status
Niet open voor verdere reacties.

wilbert1967

Gebruiker
Lid geworden
19 jun 2004
Berichten
628
hallo

we gebruiken outlook 2010 (exhange). Nu stel ik voor elke dinsdagochtend voor de woensdagmiddag tot donderdagochtend de afwezigheidsassistent/Automatische antwoorden in. Kan deze periode ook voor het hele jaar worden ingesteld?

mvg wilbert
 
Ja en nee. In de oudere Outlookversies kon je behoorlijk aan de slag met de OoO assistant, maar vanaf 2010 is die behoorlijk veranderd. Zelfs het met VBA instellen ervan, wat vroeger appeltje-eitje was, werkt niet meer. Ik ben al wel bezig om op de nieuwe manier een OoO te maken die wél werkt in 2010, maar de code daarvan staat op een andere werkpc dus daar kan ik nu niet bij.
De procedure is redelijk simpel: op een in te stellen dag en tijd kijkt hij bij het afsluiten van Outlook of de OoO moet worden ingesteld. Bij mij dus op donderdag omdat ik op vrijdag niet werk. En de code zet dan de juiste dag in de tekst en zet de OoO aan. Bij het opnieuw aanzetten van Outlook wordt de OoO automatisch weer uitgezet (vergeten veel mensen).
Kortom: ik heb de macro voor 99% klaar :). Maar nu even niet onder handbereik...

Overigens lost de macro je vraag niet op (je kunt volgens mij niet voor een heel jaar instellen) maar wél je probleem :).
 
ik wacht in spanning op je macro
(jammer dat outlook niet de opname functie heeft voor macro's tov excel/word)
 
D'r zijn meer pakketten zonder opname functie, zoals Access en Powerpoint. Met name de eerste gebruik ik heel vaak, al mis ik het opnemen daar niet zo. PowerPoint daarentegen, mag van mij best een recorder krijgen. Maar ja, Microsoft legt andere prioriteiten. Kleurtjes in de balk bijvoorbeeld :).
 
Trek morgen gerust even aan de bel als ik de code vergeet; komt namelijk wel eens voor :).
 
Ik ben er mee bezig :). Het vervelende is: op mijn andere werkplek wordt mijn profiel niet goed opgeslagen. Dus macro's die ik in Outlook maak, ben ik de volgende dag weer kwijt. En je raadt het al: ik had de code niet apart bewaard :). Ben dus alsnog opnieuw bezig om de routine bij elkaar te grutten. Maar hij komt er aan :).
 
Gelukkig weet ik nu een stuk beter waar ik zoeken moet, en had ik het belangrijkste deel van de code nog. De volgende codes moeten allemaal naar de module ThisOutlookSession. Heb je daar al macro's staan met dezelfde naam, dan moet je de codes samenvoegen tot één macro, anders gaat het niet werken. Komt-ie...

Code:
Dim oOutlook As Outlook.Application
Dim oStore As Outlook.Store
Dim oProp As Outlook.PropertyAccessor
Dim oInbox As Outlook.Folder
Dim oStorageItem As Outlook.StorageItem
Dim nms As Outlook.NameSpace
Dim oRule As Outlook.Rule, oRules As Outlook.Rules

Dit zijn algemene declaraties; die komen bovenin te staan, dus boven elke procedure.
Code:
Private Sub Application_Startup()
   SetRuleEnabled False
End Sub

De naam zegt het al: bij het opstarten van Outlook wordt deze altijd uitgevoerd. Doet niet veel: zet de OoO assistent uit m.b.v. de functie SetRuleEnabled. De volgende code doet het omgekeerde: zet de OoO aan en past de tekst (m.n. de datum) aan. In het voorbeeldje op basis van een weekdag, maar als je elke dag de vraag wilt krijgen, dan kun je die IF er wel uit halen. Of aanpassen natuurlijk.

Code:
Private Sub Application_Quit()
Dim iDag As Integer, iUur As Integer, Dag As Date
Dim msg As String

    Dag = Date
    iDag = Weekday(Date, vbMonday)
    iUur = CInt(Format(Now(), "hh"))
    
    If iDag >= 3 And iUur >= 11 Then
        weg = MsgBox("'Afwezigheidsassistent' instellen?", vbYesNo + vbDefaultButton1, "Afwezigheidsassistent")
        If weg = vbYes Then
        Do Until Weekday(Dag, vbMonday) = 1
            Dag = Dag + 1
        Loop
            tmp = InputBox("Ben je op " & Dag & " weer terug?" & vbLf & "Anders datum aanpassen...", "Volgende werkdag instellen", Dag)
            If tmp = "" Then
                Exit Sub
            ElseIf IsDate(tmp) Then
                Dag = tmp
            End If
        Else
            Exit Sub
        End If
        msg = "Ik ben tot " & Format(Dag, "dddd") & " " & Dag & " afwezig." & Chr(10) & Chr(13) _
            & "Voor vragen kun je mailen naar: mail.me@stupid.com" & Chr(10) & Chr(13) _
            & "Met vriendelijke groet," & Chr(10) & Chr(13) & Chr(10) & Chr(13) _
            & "OctaFish" & Chr(10) & Chr(13) _
            & "Definitive Wizard" & Chr(10) & Chr(13) & "Octafish Ltd"
    End If
   
    'OutofOffice tekst instellen.
    OutOfOffice msg
    'Regels aanzetten
    SetRuleEnabled True

End Sub

Hieronder de functie die de regels aan- of uit zet.
Code:
Private Function SetRuleEnabled(ByVal bEnable As Boolean)

    Set nms = Application.Session
    Set oRules = nms.DefaultStore.GetRules()
    Set oProp = nms.DefaultStore.PropertyAccessor

    'Als de Out-Of-Office aan staat (vakantie, ziek etc), kun je hem beter eerst uit zetten.
    If oProp.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B") Then
        bEnable = False
    End If
    'De Out-Of-Office instellen met de meegegeven parameter
    oProp.SetProperty "http://schemas.microsoft.com/mapi/proptag/0x661D000B", bEnable

End Function

Hieronder de functie die de tekst instelt.
Code:
Public Function OutOfOffice(Tekst As String)
    
    Set oInbox = Application.Session.GetDefaultFolder(olFolderInbox)
    ' Get an instance of the hidden StorageItem
    Set oStorageItem = oInbox.GetStorage("IPM.Note.Rules.OofTemplate.Microsoft", olIdentifyByMessageClass)
    oStorageItem.Body = Tekst
    oStorageItem.Save
    
    ' Cleanup
    Set oStorageItem = Nothing
    Set oInbox = Nothing
    
End Function

En dat is het zo'n beetje! Kijk maar eens of je het aan de praat krijgt...
 
Ik had je laatste vraag niet gezien, sorry voor de late reactie :eek:. De hele code zet je op de module ThisOutlookSession. De groep met declaraties staat, zoals ik al uitlegde, helemaal bovenaan. Dus niet in een procedure, zoals je daaronder ziet bij Application_Quit waar ook variabelen gedeclareerd staan. Ik weet eerlijk gezegd niet meer precies of ze ook allemaal publiek moeten zijn (want dat zijn ze nu) maar het werkt, dus ik laat het maar zo. 't Blok is door de jaren heen zo gegroeid :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan