Outlook sorteren contactpersonen met tussenvoegsel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
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):

Afbeeldingslocatie: http://farm4.static.flickr.com/3358/3593829718_091a8a7cff_o.png

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.

Acties:
  • 0 Henk 'm!

Anoniem: 113297

leuk om eens een outlook vba routine te zien passeren hierzo. netjes en goed aangepast aan jouw wensen.
persoonlijk zou ik de voorbeeldnaam gewoon opslaan als "van der Geest, Dennis". maw, de tussenvoegsels als deel van de familienaam beschouwen, zoals gebruikelijk is vermoed ik.

Acties:
  • 0 Henk 'm!

  • ZeilDude
  • Registratie: Juli 2004
  • Laatst online: 19-02-2022
De familienaam wordt opgeslagen inclusief tussenvoegsels. Het aparte veld 'opslaan als' is er alleen om te sorteren. Bij het sorteren geniet mijn voorkeur om dat op de familienaam zónder de tussenvoegsels te doen. Als ik zou zoeken naar "Van der Geest", zou ik zoeken op de letter "G".

Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Laatst online: 21:57
zeer interessant, ik loop hier ook altij mee te stoeien met outlook en syncen met nokia's

Tijd van werken, tijd van rusten


Acties:
  • 0 Henk 'm!

  • gabn88
  • Registratie: Februari 2005
  • Laatst online: 14:03
Ik zit hier met een soort gelijk probleem, mijn outlook heeft namelijk bij het synchroniseren ineens de achternaam in het vakje Middelste naam (of tussenvoegsel, dat is dezelfde bij outlook 2007) gezet.
Dit is niet bij alle contactpersonen gedaan.

Nu zou ik dus graag een script maken dat eerst kijkt bij de achternaam, als dat veld leeg is, maar er wel iets in de middelste naam staat, dan moet dat van de middelste naam verplaatst worden naar de achternaam.

Ik kwam ook dezelfde site tegen als de topic starter, en daar staat al een aardig stuk van de code die ik nodig heb. Ik ben echter niet echt bekend met deze manier van programmeren, zou iemand mij kunnen helpen hiermee? (het gaat dan vooral om de code op de plekken waar er vraagtekens staan;))

Syntax:
Visual Basic: 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
 

Public Sub ChangeFileAs()
    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

    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
            ' Uncomment the  strFileAs line for the desired format 



                If .isempty(.LastName) Then          %%%Geen idee of outlook dit begrijpt? In matlab werkt het wel
              
                    If .isempty(.MiddleName)==0 Then   %%%ik wil dus dat dit geld als hij dus niet leeg is

                    .LastName=.Middlename
                    .Middlename = []              &&&Ook geen idee hoe ik de middlename dan leeg moet maken?
                     End If

                 End If

                .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


Alvast bedankt voor de hulp!