Microsoft Office Outlook
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Outlooku
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Iz kontakta u kalendar

Nivo:  NIVO 3 - klinite za objašnjenje


Kao i uvek: treba samo malo razmišljanja i malo truda, pa se težak posao pretvori u lak...

Dragan Obrenović, moj dugogodišnji kolega u pisanju u računarskoj periodici, svojevremeno me je pitao za jedan savet o Outlooku. Kako nisam bio agilan da mu pomognem, on je sam zasukao rukave, pa rešio jedan interesantan problem primenom VBA makroa, a potom ga nesebično ponudio kao prilog za Praktikum.

Elem, kolega Obrenović je vremenom razvio veoma preciznu listu svojih kontakata, pri čemu je, kad god je imao podatak na raspolaganju, uredno popunjavao i polje o rođendanu. Vremenom, tih podataka se zateklo toliko mnogo da ih više nije mogao koristiti kako je zaista želeo - da na rođendan prijatelja ili kolege pošalje mail sa čestitkom.

Javila se sasvim normalna ideja: kako bi bilo podatak o rođendanu iskopirati iz sloga u folderu Contacts u kalendar, kao ciklični podatak koji se vezuje za datum i uredno se pojavljuje na stranici Outlook Today? Ali, bilo je lakše reći nego učiniti: objektni model Outlooka je, u najmanju ruku, složen i pomalo hermetičan.

Dakle, osim želje je bio potreban i inat (:

I kada sam gotovo već zaboravio na svoje obećanje da ću pomoći kolegi, on se javio sa rešenjem, što je ujedno prvi prilog o primeni VBA u Office Praktikumu. Evo šta kolega Obrenović piše:

...Ukratko, sabrutina protrči kroz sve kontakte, i one koji imaju podešeno polje Birthday ubacuje u kalendar, postavivši im RecurrencePattern na "Yearly". Jedino nisam znao kako da ga uglavim da se automatski izvršava - recimo, kada se nekom kontaktu promeni polje Birthday (čačkao sam nešto, ali nisam uspeo). Uglavnom, meni radi posao i ovako, a ti ako možeš još da ga poboljšaš, utoliko bolje... :)
 

Pa, nisam bio vredan da dodam tu automatizaciju - iskreno, odustao sam kada sam video na koji način se Event procedure ubacuju u Outlook, nije mi se dopalo. Ali, ne mari. Makro koji je pred vama odlično ilustruje strukture Outlooka i zavređuje svaku pažnju. Kolegi Obrenoviću se zahvaljujem na izvrsnom prilogu, a vama preporučujem da makro iskoristite kao polazište za istraživanje primene VBA u Outlooku.

Sub BirthdayRemind()
'
' Da bi funkcija ispravno radila,
' datum u regional setting mora biti podešen
' na format dd.MM.yy ili dd.MM.yyyy.
' Tačnije, dan i mesec moraju biti dvocifreni 
' zbog što jednostavnijeg "vađenja" dana i 
' meseca rođenja pomoću funkcije MID).

Set myOutlookApp = _
    CreateObject("Outlook.Application")
Set myNameSpace = _
    myOutlookApp.GetNamespace("MAPI")
Set myContacts = _
    myNameSpace.GetDefaultFolder(olFolderContacts).Items
Set myCalendar =  _
    myNameSpace.GetDefaultFolder(olFolderCalendar)
Set myContactItems = _
    myContacts.Restrict("[Birthday] <> ''")

For Each Person In myContactItems

   Datum = Person.Birthday
   BMonth = Val(Mid(Datum, 4, 2))
   BDay = Val(Mid(Datum, 1, 2))
   Subject = Person.FullName & " slavi rođendan!"

   AlreadyExists = False

   For Each calendarItem In myCalendar.Items
      If calendarItem.Subject = Subject Then
         Set myRecPat = _
             calendarItem.GetRecurrencePattern
         If (myRecPat.MonthOfYear <> BMonth) _
         Or (myRecPat.DayOfMonth <> BDay) Then
            calendarItem.Delete

         Else
            AlreadyExists = True
         End If

      End If
   Next

   If AlreadyExists = False Then
      Set NewBirthday = _
          myOutlookApp.CreateItem(olAppointmentItem)
      NewBirthday.Subject = Subject
      NewBirthday.AllDayEvent = True
      Set myRecPat = _
          NewBirthday.GetRecurrencePattern
      myRecPat.RecurrenceType = olRecursYearly
      myRecPat.MonthOfYear = BMonth
      myRecPat.DayOfMonth = BDay
      NewBirthday.Close (0)
   End If

Next

End Sub

 

  (C) 2000-2009 Praktikum na Webu

Dragan Obrenović, jun 2000.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.