Microsoft Outlook troubleshooting

Poniższy artykuł przedstawia kod, dzięki któremu użytkownik może utworzyć wezwanie na spotkanie dla określonych adresatów lub utworzyć wydarzenie kalendarzowe.

Różnica pomiędzy wezwaniem a wydarzeniem polega na umieszczeniu w pierwszym przypadku adresatów (przygotowanie wiadomości do wysłania, która osadzi się w kalendarzu odbiorcy). O ile przedstawiona funkcja nie będzie zawierała adresów email to utworzone zostanie wydarzenie gotowe do zapisania po akceptacji „Zapisz i zamknij” w kalendarzu inicjatora.

Poniższe ekrany pokazują przyporządkowanie adresatów, jako obserwatorów bądź też osoby, które są zobowiązane do stawienia się na spotkaniu:

Widok wezwania na spotkanie, które zawiera inicjatora (nadawcę) oraz trzy osoby towarzyszące
Rys 1. Widok wezwania na spotkanie, które zawiera inicjatora (nadawcę) oraz trzy osoby towarzyszące.

Poniższy kod funkcji zawiera osobny parametr dla osób, które są zobligowane do odbycia spotkania, jak i osoby poinformowane, które mogą, ale nie muszą się na nim stawić. Takimi osobami są obserwatorzy m@m.com oraz k@m.com.

Sub Wywołanie_testowe()
    If OutlookZaproszenie_lub_wydarzenie(Temat:="Spotkanie z MrX", _
                                         Poczatek:="2011-05-18 17:00", _
                                         Dlugosc:=15, _
                                         Miejsce:="Budynek 123", _
                                         Adresat:="adres@vbatools.pl", _
                                         Adresat_opc:="m@m.com, k@m.com", _
                                         Tresc:="Spotkajmy się aby omówić sprawy") = False Then _
       MsgBox "Brak możliwości wysłania wiadomości!", vbExclamation, "VBATools.pl"
End Sub

Function OutlookZaproszenie_lub_wydarzenie(Temat$, Poczatek As Date, Dlugosc&, Optional Miejsce$, _
                                           Optional Adresat$, Optional Adresat_opc$, _
                                           Optional Tresc$) As Boolean
                                           
    Dim oAppointment As Outlook.AppointmentItem
    Dim oOutlook As Outlook.Application
    Dim sAdresat() As String, sAdresat_opc() As String, x&, m&, h&
   
    On Error GoTo blad
        h = Dlugosc \ 60: m = Dlugosc Mod 60
   
    Set oOutlook = New Outlook.Application
    Set oAppointment = Outlook.CreateItem(olAppointmentItem)
   
    With oAppointment
        .Subject = Temat
        .Start = Poczatek
        .End = Poczatek + CDate(CStr(h) & ":" & CStr(m) & ":00")
        .LOCATION = Miejsce
        .Body = Tresc
    
        If Len(Adresat) > 0 Or Len(Adresat_opc) > 0 Then
            .MeetingStatus = olMeeting
            Adresat = Replace(Adresat, ";", ",")
            sAdresat = Split(Adresat, ",")
            For x = 0 To UBound(sAdresat)
                If sAdresat(x) Like "*@*.*" Then
                  .Recipients.Add(sAdresat(x)).Type = 1
                End If
            Next
            Adresat_opc = Replace(Adresat_opc, ";", ",")
            sAdresat_opc = Split(Adresat_opc, ",")
            For x = 0 To UBound(sAdresat_opc)
                If sAdresat_opc(x) Like "*@*.*" Then
                  .Recipients.Add(sAdresat_opc(x)).Type = 2
                End If
            Next
            .Display '.Send
        Else
            .MeetingStatus = olNonMeeting
            .Display '.Save
        End If
    End With
   
    Set oAppointment = Nothing
    Set oOutlook = Nothing
    OutlookZaproszenie_lub_wydarzenie = True
    Exit Function

blad:
    Debug.Print "VBATools.pl Error nr " & Err.Number & vbCr & Err.DESCRIPTION
    OutlookZaproszenie_lub_wydarzenie = False
End Function

Niżej przedstawiona procedura tworzy na podstawie powyższej funkcji wydarzenie kalendarzowe.

Sub Wywołanie_testowe_wydarzenia()
    If OutlookZaproszenie_lub_wydarzenie(Temat:="Spotkanie z MrX", _
                                         Poczatek:="2011-05-18 17:00", _
                                         Dlugosc:=15, _
                                         Miejsce:="Budynek 123", _
                                         Tresc:="Spotkanie uzgodnienia spraw") = False Then _
       MsgBox "Brak możliwości wysłania wiadomości!", vbExclamation, "VBATools.pl"
End Sub

Widok wydarzenia kalendarzowego, gotowego do zapisania w kalendarzu
Rys 2. Widok wydarzenia kalendarzowego, gotowego do zapisania w kalendarzu.

Powyższe funkcje można wykorzystać przy budowie interfejsu lub wywoływać z przycisku menu.
W przypadku braku doświadczenia w instalacji makr polecam artykuł Instalacja i uruchamianie makr.

MVP Shon Oskar – VBATools.pl
Jeśli masz pytania dot. tego artykułu zapraszam na Forum
Skonfiguruj swój pakiet dodatków do Excela, Worda, PowerPointa i Outlooka



© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.