Chytré makro pomůže se synchronizací Nokií

Chytré makro pomůže se synchronizací Nokií

Michal Altair Valášek mi poslal skript, který vyřeší známý problém se synchronizací telefonů Nokia s Microsoft Outlookem. Jak si můžete přečíst v dnešním článku, běžné Nokie po synchronizaci seřadí adresář podle křestního jména, nikoli podle příjmení. Makro se skládá ze dvou částí: BeforeSync spustíte před synchronizací telefonu, AfterSync po ní všechno vrátí do původního stavu.

Po spuštění prvního makra se celý adresář Outlooku upraví tak, aby se do telefonu zesynchronizovalo napřed příjmení a až potom křestní jméno. V závorce se navíc objeví i název firmy. Jméno v seznamu potom vypadá například takhle: Lutonský Marek (Computer Press).

V Microsoft Outlooku vyvolejte okno s makry (Alt+F8). Do řádku Název makra napište libovolný text a stiskněte tlačítko Vytvořit. Otevře se nové okno, kde smažte dva řádky s makrem, které jste právě vytvořili, a na jeho místo zkopírujte následující text:

Sub BeforeSync()
    Dim NS As Outlook.NameSpace
    Dim TheFolder As Outlook.MAPIFolder
    Dim C As Outlook.ContactItem
    Dim Temp As String
   
    Set NS = Application.GetNamespace("MAPI")
    Set TheFolder = NS.GetDefaultFolder(olFolderContacts)
   
    For Each C In TheFolder.Items
        If C.CustomerID = "" Then
            C.CustomerID = ".|" & C.FirstName & "|" & C.MiddleName & "|" & C.LastName
            If C.LastName = "" Then
                C.FirstName = ""
                C.LastName = C.CompanyName
            Else
                If C.CompanyName = "" Then
                    C.LastName = C.LastName & " " & C.FirstName
                    C.FirstName = ""
                    C.MiddleName = ""
                Else
                    C.LastName = C.LastName & " " & C.FirstName & " (" & C.CompanyName & ")"
                    C.FirstName = ""
                    C.MiddleName = ""
                End If
            End If
            C.Save
           
            Debug.Print C.LastName
        Else
            Debug.Print "CustomerID property not empty for " & C.FileAs & ": " & C.CustomerID
        End If
    Next
End Sub

Sub AfterSync()
    Dim NS As Outlook.NameSpace
    Dim TheFolder As Outlook.MAPIFolder
    Dim C As Outlook.ContactItem
    Dim Temp As String, Data() As String
   
    Set NS = Application.GetNamespace("MAPI")
    Set TheFolder = NS.GetDefaultFolder(olFolderContacts)
   
    For Each C In TheFolder.Items
        If Left(C.CustomerID, 2) = ".|" Then
            Data = Split(C.CustomerID, "|")
            C.FirstName = Data(1)
            C.MiddleName = Data(2)
            C.LastName = Data(3)
            C.CustomerID = ""
            C.Save
            Debug.Print C.FirstName & " " & C.LastName
        Else
            Debug.Print "CustomerID in unknown format for " & C.FileAs & ": " & C.CustomerID
        End If
    Next
End Sub

Makro se vyvolá například opět klávesovou zkratkou Alt+F8, kde vyberete požadovaný název BeforeSync nebo AfterSync a tlačítkem Spustit jej aktivujete. U svého asi pětisetpoložkového adresáře jsem na úpravu čekal něco přes minutu, kdy se zdálo, že Outlook nijak nereaguje. Ale vydržte, všechno dopadne dobře (pro jistotu ale před tím raději proveďte zálohu celé složky s původními kontakty).

Oživeno: Ještě pro jistotu připomínám, že makro je využitelné pouze u telefonů Nokia, které nemají v adresáři odděleno jméno a příjmení - tedy u běžných mobilů, nikoli smartphonů a komunikátorů.

13 komentářů

Nejnovější komentáře

  • Lukáš 27. 6. 2007 11:44:54
    Zdravím. Makro bylo moc fajn, fungovalo to bezvadně (mám 6021)... až do...
  • Mr.Dat 26. 3. 2007 13:59:35
    A já mám chuť ti ho tam fouknout po emericku.
  • uray 14. 3. 2007 10:52:12
    B-] a já mám americkánskou žvýkačku a ta se nemusí vůbec měnit heč

komerční sdělení

Komerční sdělení