Import menín do kalendára v MS Office

Publikoval Michal Kočí dňa 31.12.2004 o 00:48 v kategórii Office

Pár dní dozadu som písal príspevok, poukazujúci na článok, ako do aplikácie Microsoft Outlook dostať štátne sviatky. V diskusii sa človek pod prezývkou FX dotazoval, či niekto nevie, ako do Outlooku dostať meniny...

Pôvodne som chcel odpísať, že neviem, ale že sa to pravdepodobne nejak bude dať. Veď do Outlooku sa dajú importovať stretnutia, tak prečo by nešli naimportovať meniny (pri malej abstrakcii: jeden deň menín = jeden appointment). Áno, takto to musí ísť. Navyše, svojho času som programoval aplikáciu Kalendár, takže mám aj zoznam dátumov a k nim prislúchajúcich mien...

Nápad vygenerovať súbor menín sa mi pozdával čím ďalej tým viac... Takže jediné čo som potreboval bol popis formátu, ktorým sa dajú appointmenty do Outlooku importovať - VCS. No a keď som našiel RFC 2445, nechýbalo mi už prakticky nič. Jedine, napísať si konzolovú aplikáciu, ktorá v cykle prebehne všetky dni roka, nájde ku dňu prislúchajúce meniny a takto vygeneruje jeden veľký VCS súbor.

No a tak som aj učinil. Keďže mám práve skúškové obdobie, nechcelo sa mi čítať celé RFC, takže som sa ani nedohľadal informácie, ako vygenerovať udalosť tak, aby sa opakovala každý rok. Takže som vygeneroval len súbory s meninami na rok 2005, zatiaľ to musí stačiť.

Vygeneroval som teda 2 súbory, jeden s meninami pre Slovensko a jeden pre Čechy. Stiahnuť si ich môžete tu (pravý klik na súbor, Save File AS...):

Doplnok z 31.12.2004: Súbory som zmenil, lebo som zistil, že sa vygenerovala udalosť aj pre dni, v ktorých nik meniny nemá (napr. 1.1.). Nie že by to nejak vadilo, ale je to takto podľa mňa lepšie.

Doplnok z 4.1.2005: Ako som zistil, po importe súboru sa jednak položky netvária ako All Day Event a druhak voľba Show Time As je nastavené na Busy. Aj keď som robil rôzne pokusy s exportom a importom, nepodarilo sa mi pripraviť súbor, ktorý by tieto dva nešváry odstránil - respektíve, pripraviť sa mi ho podarilo, ale Outlook ho nechápal. Takže som nakoniec musel pristúpiť k tomu, že na naimportované meniny som poštval makro, ktoré nastaví položke All Day Event na True a Show Time As na Free. Makro prikladám:

Sub ZmenitMeniny()
    Dim nsThis As NameSpace
    Dim fldrSelected As MAPIFolder
    Dim appCurrent As Outlook.AppointmentItem
    Set nsThis = Application.GetNamespace("MAPI")
    Set fldrSelected = nsThis.GetDefaultFolder(olFolderCalendar)
    
    For Each appCurrent In fldrSelected.Items
        Select Case appCurrent.Categories
            Case "Meniny SR", "Meniny ČR"
                appCurrent.AllDayEvent = True
                appCurrent.BusyStatus = olFree
                appCurrent.Save
        End Select
    Next
    
    MsgBox "Done."
End Sub

Doplnok z 3.1.2007: Na základe jednoduchej rady (nie je nad jednoduchost) od užívateľa MJ (radu viď v komentároch) som pripravil meniny aj pre rok 2007 a stiahnuť si ich môžete tu:

Malá, ale dôležitá poznámka. Súbor musíte do Outlooku importovať takto:

  • v menu File vyberte položku Import and export...
  • v dialógu s formátom súboru vyberte položku Import an iCalendar or vCalendar file (.vcs)
  • kliknite na tlačidlo Next
  • zmeňte Files of type na vCalendar Format (*.vsc)
  • nalistujte stiahnutý súbor
  • kliknite na tlačidlo OK

Prečo tu však rozoberám tento postup? Ak by ste chceli importovať tento súbor dvojklikom naň v prieskumníkovi, Outlook by Vám ponúkol import iba prvej položky zo súboru...

Aby ste si vedeli predstaviť, ako to asi po importe vyzerá, prikladám screenshot po importe oboch súborov pri mesačnom a týďennom pohľade na kalendár. Ak si budete importovať iba jeden súbor, proste si zo screenshotu odmyslite jeden druh menín :)

Mesačný pohľad na kalendár po importe menín

Týždenný pohľad na kalendár po importe menín

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.