Automatisch instellen van automatisch antwoord.

Status
Niet open voor verdere reacties.

Hamadryas

Gebruiker
Lid geworden
21 jun 2019
Berichten
24
Beste leden,
Ik wil graag in outlook mijn automatisch antwoord laten instellen via VBA als er de volgende werkdag een afspraak met "verlof" in mijn agenda staat.
Ik heb al heel wat code maar ik krijg toch nog een "fout 438 tijdens uitvoering: De eigenschap of methode wordt niet ondersteund door dit object" voor het gedeelte waarbij ik de instellingen naar outlook wil brengen. (deze lijn: Outlook.Application.session.OutOfOfficeSettings.startTime = dtHuidigeWerkdag + TimeSerial(18, 0, 0))
Kan iemand hierbij helpen? Ik gebruik Office 365 met Microsoft exchange.

Alvast heel sterk bedankt!

Code:
Private Sub Application_Startup()
    Set mijnKalender = Outlook.Application.session.GetDefaultFolder(olFolderCalendar)
    CheckNextWorkdayAppointment
End Sub

Private Sub CheckNextWorkdayAppointment()
    ' Declaratie van variabelen
    Dim afspraak As Outlook.AppointmentItem
    Dim onderwerpIntern As String
    Dim onderwerpExtern As String
    Dim inhoudBinnen As String
    Dim inhoudBuiten As String
    Dim dtVerlofStart As Date
    Dim dtVerlofEinde As Date
    Dim dtHuidigeWerkdag As Date
    Dim dtVolgendeWerkdag As Date
    
    ' Het bepalen van de huidige en volgende werkdag
    dtHuidigeWerkdag = GetHuidigeWerkdag(Date)
    dtVolgendeWerkdag = GetVolgendeWerkdag(dtHuidigeWerkdag)
    
    ' Itereren over de afspraken in de agenda
    For Each afspraak In mijnKalender.Items
        If afspraak.Start >= dtVolgendeWerkdag And afspraak.Start < dtVolgendeWerkdag + 1 Then
            ' Controleren of de afspraak op de volgende werkdag valt
            If InStr(1, LCase(afspraak.Subject), "verlof") > 0 Or InStr(1, LCase(afspraak.Location), "verlof") > 0 Then
                ' Controleren of de afspraak een "verlof" aanduiding heeft in het onderwerp of de locatie
                
                ' Controleren of de volgende werkdag na het verlof is bepaald
                If dtVolgendeWerkdag <> DateSerial(1900, 1, 1) Then
                    ' Het maken van automatische antwoordteksten voor interne en externe personen
                    onderwerpIntern = "Automatisch Antwoord: Afwezig"
                    inhoudBinnen = "hier komt de tekst voor internen"
                    onderwerpExtern = "Automatisch Antwoord: Afwezig"
                    inhoudBuiten = "hier komt de tekst voor externen"
                    
                         ' Het automatische antwoord instellen vanaf de huidige werkdag om 18:00 uur tot de dag na de verlofafspraak om 8:00 uur
                        Outlook.Application.session.OutOfOfficeSettings.startTime = dtHuidigeWerkdag + TimeSerial(18, 0, 0)
                        Outlook.Application.session.OutOfOfficeSettings.endTime = dtVolgendeWerkdagNaVerlof + TimeSerial(8, 0, 0)
                        Outlook.Application.session.OutOfOfficeSettings.InternalReply.Subject = onderwerpIntern
                        Outlook.Application.session.OutOfOfficeSettings.InternalReply.Body = inhoudBinnen
                        Outlook.Application.session.OutOfOfficeSettings.ExternalReply.Subject = onderwerpExtern
                        Outlook.Application.session.OutOfOfficeSettings.ExternalReply.Body = inhoudBuiten
                        Outlook.Application.session.OutOfOfficeSettings.Enabled = True
                    Exit For ' Stoppen met de iteratie
                End If
            End If
        End If
    Next afspraak
End Sub

Private Function GetHuidigeWerkdag(ByVal dtDatum As Date) As Date
    ' Het aantal dagen tellen totdat een werkdag wordt bereikt (zaterdag en zondag overslaan)
    Dim intDag As Integer
    
    intDag = Weekday(dtDatum)
    Do Until intDag <> vbSaturday And intDag <> vbSunday
        dtDatum = dtDatum - 1
        intDag = Weekday(dtDatum)
    Loop
    
    GetHuidigeWerkdag = dtDatum
End Function

Function GetVolgendeWerkdag(dtHuidigeWerkdag As Date) As Date
    ' Bepalen van de volgende werkdag op basis van de huidige werkdag
    Dim dtVolgendeDag As Date
    
    dtVolgendeDag = dtHuidigeWerkdag + 1 ' Ga naar de volgende dag
    
    ' Controleren of de volgende dag een weekenddag is (zaterdag of zondag)
    Do While Weekday(dtVolgendeDag, vbMonday) > 5
        dtVolgendeDag = dtVolgendeDag + 1 ' Ga naar de volgende dag
    Loop
    
    GetVolgendeWerkdag = dtVolgendeDag
End Function
 
Waar heb je deze code vandaan? graag een link.
Het komt op mij over dat deze code niet van microsoft is.
"OutOfOfficeSettings" vind ik nergens op het internet.
 
Dag alphamax

Het laatste deeltje heb ik via Chat GPT, vermits ik niets op internet vond dat werkte.
Kan jij mij verder helpen?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan