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ů.