Iedereen die Outlook gebruikt zal het volgende probleem wel herkennen: Hoe sla je de Nederlandse namen met een tussenvoegsel op? Wanneer je alleen met Outlook werkt is dat niet zo'n probleem, maar wanneer je je gegevens synchroniseert wel. In het buitenland kennen ze onze tussenvoegsels niet of nauwelijks. Zo ondersteunt mijn Nokia E71 ze niet.
Sinds enige tijd synchroniseer ik via SyncML van Memotoo. Dit bevalt prima, al zijn er wel kleine probleempjes. Eén daarvan is het sorteren van je contactpersonen in Outlook. Outlook heeft hier namelijk een speciaal veld voor, genaamd "Opslaan als" (in het Engels "File as):

Heel handig, ware het niet dat dit veld niet in de synchronisatie wordt meegenomen. Nu hoeft dat niet per se, maar dan heb je wel een hulpmiddel nodig om al de waarde van het veld "Opslaan als" te bewerken, tenzij je heel graag handmatig alles wilt aanpassen. Ik vind dat geen leuk werk, zeker niet aangezien in meerdere werkplekken met meerdere Outlook configuraties heb.
Daarom ben ik op zoek gegaan naar zo'n hulpmiddel. In de vorm van een plugin kon ik die niet vinden, maar wel als macro in VBscript. Ik kwam deze oplossing tegen. Een script waarmee je uit 5 formaten kunt kiezen om je contactpersonen op te slaan. Perfect! Nou ja, bijna. Ik verkies namelijk het formaat "Achternaam, Voornaam". Outlook herkent standaard tussenvoegsels als "van" en "de", maar tussenvoegsels als "ter" of "van der" niet. De laatste breekt Outlook zelfs heel vreemd af zoals te zien is in de afbeelding. Daarom ben ik zelf maar wat aan de slag gegaan met het script, geïnspireerd door een ander voorbeeld. Met dit als resultaat:
Graag hoor ik of iemand hier nog aanvullingen op heeft. Als je niet weet hoe je de code moet gebruiken, lees dan even dit door.
Sinds enige tijd synchroniseer ik via SyncML van Memotoo. Dit bevalt prima, al zijn er wel kleine probleempjes. Eén daarvan is het sorteren van je contactpersonen in Outlook. Outlook heeft hier namelijk een speciaal veld voor, genaamd "Opslaan als" (in het Engels "File as):

Heel handig, ware het niet dat dit veld niet in de synchronisatie wordt meegenomen. Nu hoeft dat niet per se, maar dan heb je wel een hulpmiddel nodig om al de waarde van het veld "Opslaan als" te bewerken, tenzij je heel graag handmatig alles wilt aanpassen. Ik vind dat geen leuk werk, zeker niet aangezien in meerdere werkplekken met meerdere Outlook configuraties heb.
Daarom ben ik op zoek gegaan naar zo'n hulpmiddel. In de vorm van een plugin kon ik die niet vinden, maar wel als macro in VBscript. Ik kwam deze oplossing tegen. Een script waarmee je uit 5 formaten kunt kiezen om je contactpersonen op te slaan. Perfect! Nou ja, bijna. Ik verkies namelijk het formaat "Achternaam, Voornaam". Outlook herkent standaard tussenvoegsels als "van" en "de", maar tussenvoegsels als "ter" of "van der" niet. De laatste breekt Outlook zelfs heel vreemd af zoals te zien is in de afbeelding. Daarom ben ik zelf maar wat aan de slag gegaan met het script, geïnspireerd door een ander voorbeeld. Met dit als resultaat:
VBScript: ThisOutlookSession
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| Public Sub ChangeFileAs() 'Original code by Slovaktech @ http://www.slovaktech.com/code_samples.htm#FileAs Dim objOL As Outlook.Application Dim objNS As Outlook.NameSpace Dim objContact As Outlook.ContactItem Dim objItems As Outlook.Items Dim objContactsFolder As Outlook.MAPIFolder Dim obj As Object Dim strFirstName As String Dim strLastName As String Dim strFileAs As String Dim aTussenvoegsel Dim i Dim strSpace As String On Error Resume Next Set objOL = CreateObject("Outlook.Application") Set objNS = objOL.GetNamespace("MAPI") Set objContactsFolder = objNS.GetDefaultFolder(olFolderContacts) Set objItems = objContactsFolder.Items For Each obj In objItems 'Test for contact and not distribution list If obj.Class = olContact Then Set objContact = obj With objContact 'Lastname, Firstname format strFileAs = .LastNameAndFirstName i = 0 strSpace = " " strFirstName = .FirstName strLastName = .LastName aTussenvoegsel = Array("van der", "van den", "te", "ter") For Each Item In aTussenvoegsel If InStr(strLastName, (aTussenvoegsel(i) & strSpace)) > 0 Then strFileAs = Replace(strLastName, (aTussenvoegsel(i) & strSpace), "") & ", " & strFirstName & strSpace & aTussenvoegsel(i) End If i = i + 1 Next 'Alternative formats: 'Company name only 'strFileAs = .CompanyName 'Companyname (Lastname, Firstname) 'strFileAs = .CompanyAndFullName 'Lastname, Firstname (Company) format 'strFileAs = .FullNameAndCompany 'Firstname Lastname format 'strFileAs = .FullName .FileAs = strFileAs .Save End With End If Err.Clear Next Set objOL = Nothing Set objNS = Nothing Set obj = Nothing Set objContact = Nothing Set objItems = Nothing Set objContactsFolder = Nothing End Sub |
Graag hoor ik of iemand hier nog aanvullingen op heeft. Als je niet weet hoe je de code moet gebruiken, lees dan even dit door.