Microsoft Outlook troubleshooting

Artykuł dotyczy: Microsoft Outlook 2007/ 2003 / 2002 / 2000

MS Outlook pozwala zaimportować większą ilość terminów do kalendarza dzięki utworzonej wcześniej bazie danych w programie Excel.

Aby przystąpić do pracy należy wyselekcjonować dane, jakie będą istotne do utworzenia obiektu kalendarzowego. Poniższy rysunek pokazuje przykładową bazę elementów (arkusz: Dane), jakie wykorzystamy przy imporcie do Outlooka.

Poniżej przykład uporządkowanego obszaru bazy, np. wielkości tablicy „A:J” (od Temat do Opis). Pola nazw kolumn zgodne z importem rozumianym przez Outlooka to:

Temat, Datarozpoczęcia, Czasrozpoczęcia, Datazakończenia, Czaszakończenia, Przypomnienie wł/wył, Dataprzypomnienia, Czasprzypomnienia, Kategorie, Opis

Warunkiem koniecznym do prawidłowego importu jest nadanie obszaru roboczego o nazwie Kalendarz (arkusz: Outlook).

W przypadku, kiedy nasza baza zwiększa swoją objętość, aktualizacje obszaru możemy realizować za pomocą poniższej instrukcji umieszczonej w module Excela:

Dim oName As Name
    For Each oName In ActiveWorkbook.Names
        If oName.Name = "Kalendarz" Then oName.Delete
    Next
ActiveWorkbook.Names.Add Name:="Kalendarz", _
RefersTo:=Range("A1:J" & Cells(Rows.Count, "A").End(xlUp).Row)

Jeśli już posiadamy jasno określoną matrycę, przystępujemy do importu danych w Outlooku. Przedtem należy wyjść z pliku bazy danych (zamknąć plik Excela). Mechanizm importu możemy znaleźć w Outlooku: Menu/Plik/Importuj lub eksportuj/Import z innego programu lub pliku/Microsoft Excel.

Wybieramy plik oraz stosowną opcję metody importu.

Wskazujemy folder kalendarza (może to być dowolny folder, inny niż domyślny, o właściwościach kalendarza).

Możemy określić inne pola importu, jednakże powyższy przykład bazy zawiera większość stosowanych.

Niestety import ten posiada jedną wadę. Pozbawiony jest prawidłowego odczytu pola: Przypomnienie wł/wył = PRAWDA, pomimo prawidłowego wskazania. W przypadku umieszczenia anglojęzycznej nazwy parametru pola otrzymujemy identyczny skutek.

Powyższy rysunek nie zawiera zaznaczonego przypomnienia, choć w chwili importu data przypomnienia była wcześniejsza niż data importu danych.

Istnieje ręczna metoda, polegająca na ustawieniu widoku kalendarza: Widok/Widok bieżący/Wszystkie terminy lub Widok/Rozmieść wg/Kategorie i przy wyciągnięciu nowej kolumny Przypomnienie, jest możliwość naciśnięcia w jego puste pole (pojawi się dzwoneczek) oznaczający jego nadanie w dacie i godzinie terminu.

Wyciągnięcie kolumny realizujemy poprzez prawy klik na pasku nazw kolumn/Wybór pola/Przenosimy przytrzymując myszą nazwę kolumny Przypomnienie i puszczając przycisk w odpowiednim miejscu.

Napotykamy na problemem, gdy ilość kliknięć jest równa np. 100 lub więcej. Praca taka wydaje się zbyt mozolna, zwłaszcza mając na uwadze cykliczność naszych działań.

Aby temu zaradzić i proces ten zautomatyzować, należy użyć poniżej napisanej procedury, która zbada czy przypomnienie terminów zaimportowanych do Outlooka jest aktualne w dacie. Wszystkie takie obiekty uaktualni, dodając „dzwoneczek” (włączy dla tych obiektów przypomnienie). Uniwersalność procedury pozwala umieścić ją zarówno w module Outlooka, jak i Excela (w Excelu należy w Referencjach dodać bibliotekę Oulooka Menu/Tools/References -> Microsoft Outlook …Object libary).

Sub wlaczanie_przypomninia()
    Dim msg$, Response$, q&
    msg = "Procedura włączenia przypomnień do terminów w kalendarzu Outlooka" & vbCr & vbCr _
    & "Aby kontynuować naciśnij ''Tak''" & vbCr _
    & "Aby anulować operacje naciśnij ''Nie''"

    On Error GoTo blad
    Response = MsgBox(msg, vbYesNo + vbExclamation + vbDefaultButton2, " Aktualizacja dzwoneczków")
    If Response = vbYes Then
        Dim OutApp As Object
        Set OutApp = CreateObject("Outlook.Application")
        OutApp.Session.Logon

        Dim oApptFolder As MAPIFolder
        Set oApptFolder = OutApp.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)
        Dim oCalendar As AppointmentItem
        Dim olApp As Items
        Set olApp = oApptFolder.Items
        For q = 1 To olApp.Count
            DoEvents
            Set oCalendar = olApp.Item(q)
            If Not oCalendar.Categories = "" _
                And oCalendar.ReminderSet = False _
                And oCalendar.Start >= Now Then
                'Jeśli nie określimy nazwy dla kategorii należy zmienić pow. warunek.
                oCalendar.ReminderSet = True
                oCalendar.Save
            End If
            oCalendar = Nothing
        Next q
        MsgBox "Dzwoneczki uaktywnione!", vbInformation, "MVP OShon VBATools.pl"
        Set OutApp = Nothing
        Set oApptFolder = Nothing
    End If
    Exit Sub
blad:
    MsgBox "Błąd: " & Err.Number & vbCr & Err.Description, vbExclamation
End Sub

Jeśli automat zainteresuje się naszymi terminami, dla których przypomnienie miało nastąpić o wiele wcześniej, niż data wydarzenia kalendarzowego, należy anulować potwierdzenie przypomnienia naciskając: Odrzuć wszystkie.

W kalendarzu Outlooka pozostaną tylko te, co do których termin przypomnienia będzie skutkował komunikatem w nadanym, aktualnym terminie.

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.

Komentarze

Komentarze
Iwona Tomkiewicz
Iwona Tomkiewicz, Prokuratura Okręgowa w Suwałkach 2014-03-20 11:39:04
Robiłam import do kalendarza wg. instrukcji i nie zaimportowało mi całego arkusza tylko pierwsze 38 pozycji. Nie mogę dojść do przyczyny. Czy jest możliwość, aby z automatu były wysyłane powiadomienia do uczestników spotkania?
Iwona Tomkiewicz
Iwona Tomkiewicz, Prokuratura Okręgowa w Suwałkach 2014-03-20 13:29:29
Robiłam import do kalendarza wg. instrukcji i nie zaimportowało mi całego arkusza tylko pierwsze 38 pozycji. Nie mogę dojść do przyczyny. Czy jest możliwość, aby z automatu były wysyłane powiadomienia do uczestników spotkania?
Oskar
Oskar, VBATools.pl 2014-03-22 21:03:35
Przyczyną jest brak określenia nazwy dla obszaru (pow piszę o tym że ma się on nazywać kalendarz i być zadeklarowany na całej powierzchni danych - wg pierwszej procedurki). Jeśli masz więcej pytań zapraszam na Forum.
Oskar
Oskar, VBATools.pl 2014-10-15 14:11:20
Przygotowałem dodatek do generowania wydarzeń oraz wezwań na spotkanie polecam http://vbatools.pl/eksport-wydarzen-do-outlooka/