Ordnertypen nach PST-Import von IMAP-Server falsch

Hinweis: das Script in diesem Artikel kommt von der Webseite slipstick.com. Der Original-Artikel wird am Ende des Beitrages verlinkt.
Ordnertyp nach Import falsch.

Migration zu Exchange Online oder einem OnPremise-Exchange: nervtötend. Besonders der Weg, die PSTs in einem Outlook zu exportieren und wieder zu importieren. Typische Fehlerquelle: beim Import wird ein Ordner vom Typ IPF.Imap angelegt, obwohl IPF.Note benötigt wird. In Folge dessen scheinen Ordner leer, unten links im Outlook der Hinweis „Filter angewendet“. Also auf jedem Client in jedem Ordner den Filter anpassen – oder mit VBS den Ordner anpassen.

Vorbereitende Maßnahmen

Damit wir VBS-Makros nutzen können, müssen wir ein Outlook, auf dem wir importieren, erst mal anpassen. Unter Datei > Optionen > Menüband anpassen setzen wir die Checkbox „Entwicklertools“.

Und unter Trust Center > Einstellungen für das Trust Center > Makroeinstellungen aktivieren wir die „Benachrichtigungen für alle Makros

In Outlook selber finden wir den aktivierten Reiter „Entwicklertools“. In den wechseln wir und wählen „Visual Basic“. Im neuen Fenster klicken wir links auf „Projekt1 (VbaProject.OTM)“ und wählen „Einfügen“ > „Modul“. Folgenden Code kopieren wir in das neue Fenster:

Option Explicit
Dim SubFolder As MAPIFolder

Sub ChangeFolderClassAllSubFolders()
    Dim i               As Long
    Dim iNameSpace      As NameSpace
    Dim myOlApp         As Outlook.Application
    Dim ChosenFolder    As Object
    Dim Folders         As New Collection
    Dim EntryID         As New Collection
    Dim StoreID         As New Collection
       
    Set myOlApp = Outlook.Application
    Set iNameSpace = myOlApp.GetNamespace("MAPI")
    Set ChosenFolder = iNameSpace.PickFolder
    If ChosenFolder Is Nothing Then
GoTo ExitSub:
    End If

    Call GetFolder(Folders, EntryID, StoreID, ChosenFolder)
        ChangeFolderContainer
        
    For i = 1 To Folders.Count
        Set SubFolder = myOlApp.Session.GetFolderFromID(EntryID(i), StoreID(i))
        On Error Resume Next
        ChangeFolderContainer
    
        On Error GoTo 0
    Next i
ExitSub:
End Sub
    
  
Private Sub ChangeFolderContainer()
Dim oFolder As Outlook.Folder
Dim oPA As Outlook.PropertyAccessor
Dim PropName, Value, folderType As String

PropName = "http://schemas.microsoft.com/mapi/proptag/0x3613001E"
Value = "IPF.Note"

On Error Resume Next
Set oFolder = SubFolder 'Application.ActiveExplorer.CurrentFolder
Set oPA = oFolder.PropertyAccessor

folderType = oPA.GetProperty(PropName)
Debug.Print SubFolder.Name & " " & (folderType)

If folderType = "IPF.Imap" Then

oPA.SetProperty PropName, Value
Debug.Print "     Changed: " & SubFolder.Name & " " & Value

End If

Set oFolder = Nothing
Set oPA = Nothing
End Sub
     
    
Sub GetFolder(Folders As Collection, EntryID As Collection, StoreID As Collection, Fld As MAPIFolder)
    Dim SubFolder       As MAPIFolder
       
    Folders.Add Fld.FolderPath
    EntryID.Add Fld.EntryID
    StoreID.Add Fld.StoreID
    For Each SubFolder In Fld.Folders
        GetFolder Folders, EntryID, StoreID, SubFolder
    Next SubFolder
       
ExitSub:
    Set SubFolder = Nothing
       
End Sub

Das ganze sieht dann ungefähr so aus:

Wir speichern links oben, und schließen das Fenster. Und damit sind wir in der Lage, mit unserem Outlook Postfächer zu patchen, um die Ordnertypen zu ändern.

Anpassen der Ordnertypen

Das Anpassen der Ordnertypen ist von nun an ein Kinderspiel. Wir wechseln im Reiter „Entwicklertools“ auf „Makros“ und wählen das gerade frisch erstellte „Projekt1.ChangeFolderClassAllSubfolders“ aus:

Es öffnet sich ein neues Fenster, welches nach einem Ordner fragt. Hier können wir alles zusammenklappen und ein gesamtes Postfach nehmen, mit „OK“ bestätigen. Das Outlook hängt für ein paar Sekunden (bis hin zu Minuten…) – und im Anschluss sind alle Ordner korrekt, alle Emails ohne Entfernenung des Filters sichtbar und alle Kunden glücklich.

Kleine Randnotiz für mich: einmal kurz den Ordner wechseln, damit Outlook den geänderten Ordnertyp mitbekommt. Sonst kann ich fluchen und rumprobieren, wie ich will.

Credits

Das Script wurde nicht durch mich geschrieben und veröffentlicht. Ich habe es einem englischsprachigem Artikel entnommen und minimal angepasst (STRG+F11 funktionierte bei mir nicht, daher über den Reiter „Entwicklerkonsole“). Der ursprüngliche Artikel findet sich hier:

Kategorien: Exchange, Microsoft 365

tino-ruge.de wird tino-kuptz.de

Im Laufe des Jahres 2024 wird dieser Blog umziehen. Alle Inhalte werden 1:1 weitergeleitet, nix geht verloren. Neue Domain, alter Autor, alter Inhalt.