takvorian
Goto Top

Benutzerdefinierte Ordnerfelder im Outlook ex- und importieren

Hallo zusammen,

habe einen 0365 Business Premium Kunden der massiv mit öffentlichen Ordnern arbeitet.
Nun, ich habe diesen erst auf o365 umgestellt und nun eine mittelschwere krise face-smile

Der Kunde hatte vorher in Outlook 2010 für Seine Kontakte zum Sortieren unzählige benutzerdefinierte Ordnerfelder angelegt.
Diese Ordnerfelder ( siehe Screenshot ) möchte ich nun gerne exportieren und wieder importieren im Outlook 2016.

Beim Upgrade auf Office 2016 werden diese eigenartigerweise nicht übernommen.

Wer kann mir Tipps geben?

Danke Micha
ordnerfelder

Content-Key: 298734

Url: https://administrator.de/contentid/298734

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 114757
114757 Mar 10, 2016 updated at 11:52:21 (UTC)
Goto Top
Die benutzerdefinierten Felder werden normalerweise in der jeweiligen Mailbox gespeichert und den jeweiligen Ordnern zugeordnet, und nicht in den Outlook-Einstellungen.
Wenn also der Store gewechselt wurde ist auch klar das die Felder nicht mehr vorhanden sind.

Könnte man mit VBA exportieren und dann wieder in den Ordnern einspielen. An die Felder kommt man mit der Eigenschaft UserDefinedProperties.

Gruß jodel32
Member: takvorian
takvorian Mar 10, 2016 at 12:34:25 (UTC)
Goto Top
Hallo jodel,

Danke für den Tipp. Es ist korrektd ass der Store gewechselt wurde. ( vorher SBS2003, jetzt o365 )
Kannst Du mir sagen wie ich so einen VBA Export erzeugen kann?

Danke Michael
Mitglied: 114757
114757 Mar 10, 2016 updated at 12:44:15 (UTC)
Goto Top
Zitat von @takvorian:
Kannst Du mir sagen wie ich so einen VBA Export erzeugen kann?
Das wäre eher was für eine Auftragsarbeit.
Member: colinardo
colinardo Mar 10, 2016 updated at 17:13:21 (UTC)
Goto Top
Hallo Micha,
um den Vorschlag von @114757 aufzugreifen könnte ein möglicher VBA-Code zur Migration der benutzerdefinierten Felder von einem Store zum anderen so aussehen:

Zum Starten der Prozedur sollten beide Outlook-Stores (also der Alte und der Neue) in Outlook eingebunden sein. Gestartet werden muss die Prozedur MigrateCustomUserProperties des u.s. Makros.

Dieser fragt dann per Folderpicker den Quell- und den Zielstore ab von wo nach wo die Felder übertragen werden sollen. Danach werden rekursiv alle Ordner des Quellstores nach benutzerdefinierten Feldern durchlaufen und mit dem gleichen Ordner im Zielstore verglichen. Fehlt dort eine Userproperty wird sie im Zielstore angelegt.
Wichtig: Die Ordnerstruktur des neuen Stores sollte also mit der des alten Stores übereinstimmen damit die richtigen Ordner zugeordnet werden können. Findet das Skript die Ordner aus dem alten Store nicht an der gleichen Stelle im neuen Store wieder werden die Felder für die nicht gefundenen Ordner nicht übertragen und übersprungen.

Code wurde hier kurz angetestet und macht hier in der Testumgebung was er soll. Teste ihn einfach mal bei dir.
Weitere Kommentare finden sich im Code
Sub MigrateCustomUserProperties()
    Dim objStoreTarget As Store, objStoreSource As Store
    'Quellstore wählen  
    MsgBox "Wählen sie im folgenden Dialog einen Quellstore aus welcher die benutzerdefinierten Felder beinhaltet.", vbInformation  
    Set objStoreSource = Application.Session.PickFolder.Store
    ' Zielstore wählen  
    MsgBox "Wählen sie nun einen Zielstore zum Übertragen der benutzerdefinierten Felder aus.", vbInformation  
    Set objStoreTarget = Application.Session.PickFolder.Store
    
    'rekursive Prozedur starten  
    processFolders objStoreSource.GetRootFolder, objStoreTarget.GetRootFolder
    
    msgbox "Migration abgeschlossen."  
End Sub

Sub processFolders(ByVal fldr As Folder, ByRef objTargetRoot As Folder)
    On Error Resume Next
    Dim prop As UserDefinedProperty, objTargetFolder As Folder, found As Boolean
    found = True
    'Anfang für die Ordnerrekutrsion  
    Set objTargetFolder = objTargetRoot
    'Pfad ohne Storenamen erstellen  
    strFullPath = Split(fldr.FolderPath, "\", 4, 1)(3)  
    ' Navigiere zum Zielordner über einen Split des Pfades durch '\'  
    For Each strPathPart In Split(strFullPath, "\", -1, 1)  
        Set objTargetFolder = objTargetFolder.Folders(strPathPart)
        If Err.number <> 0 Then
            ' Wenn Pfad nicht existiert verarbeite stattdessen den nächsten Ordner  
            found = False
            Exit For
        End If
    Next
    ' Existiert der gleiche Ordner auch im Zielstore, dann ...  
    If found Then
        'Für jede benutzerdefinierte Eigenschaft des Ordners  
        For Each prop In fldr.UserDefinedProperties
            'Wenn die Eigenschaft im Zielstore noch nicht existiert, lege sie mit den selben Eigenschaften dort an  
            If objTargetFolder.UserDefinedProperties.Find(prop.Name) Is Nothing Then
                objTargetFolder.UserDefinedProperties.Add prop.Name, prop.Type, prop.DisplayFormat, prop.Formula
            End If
        Next
    End If
    'Für jeden Unterordner Funktion rekursiv aufrufen  
    For Each subfolder In fldr.Folders
        processFolders subfolder, objTargetRoot
    Next
End Sub
Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Member: takvorian
takvorian Mar 14, 2016 at 07:01:28 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für den Code.
Aber ganz ehrlich.. das wird mir zu kompliziert. Wir haben uns das am WE nochmal angesehen. Es sind ca 50 Benutzerdefinierte Ordnerfelder von denen aber auch nur 10-15 zugewiesen sind. Also ausmisten und schnell per Hand anlegen.

vg Michael
Member: colinardo
colinardo Mar 14, 2016 updated at 07:31:13 (UTC)
Goto Top
Zitat von @takvorian:
Aber ganz ehrlich.. das wird mir zu kompliziert.
Bedienung ist eigentlich auch für DAUs möglich face-smile
Wir haben uns das am WE nochmal angesehen. Es sind ca 50 Benutzerdefinierte Ordnerfelder von denen aber auch nur 10-15 zugewiesen sind. Also ausmisten und schnell per Hand anlegen.
Na in dem Fall ist das was anderes, wenn man damit gleichzeitig das Haus fegt face-wink

Vielleicht hilft das Skript ja anderen die eine ähnliche Lösung suchen.

Grüße Uwe