Outlook-Ordner ausblenden und organisieren mit VBA und PowerShell

Outlook VBA

Haben Sie mehrere Microsoft Exchange-Konten in Ihrem klassischen Outlook-Profil, so haben Sie für jedes Konto einen Kalender und Kontakte. Falls Sie nicht alle Kalender- und Kontaktordner verwenden und diese die Ansicht unübersichtlich machen, haben Sie zwei Möglichkeiten: Ändern Sie eine Eigenschaft des Ordners, um ihn auszublenden, oder erstellen Sie eine neue Gruppe im Navigationsmodul und verschieben Sie den Ordner dorthin, damit er nicht die Gruppen „Meine Kalender“ oder „Meine Kontakte“ überdeckt. Alternativ können Sie den Ordner auch in eine neue Gruppe verschieben und dann ausblenden. Wenn Outlook das Ausblenden des Ordners aufhebt, befindet er sich in der separaten Gruppe.

Standard Methode

Es ist wahrscheinlich, dass Outlook einen Ordner wieder einblendet, wenn Sie dem Ordner ein Element hinzufügen. Der Empfang einer Besprechungsanfrage für den Kalender könnte dazu führen, dass Outlook den Ordner anzeigt. Beim Speichern der Adresse aus einer E-Mail wird möglicherweise der Ordner Kontakte angezeigt.

Einen Ordner auszublenden wird nur im klassischen Outlook unterstützt und gilt nur für das Profil, in dem Sie ihn ausblenden. Sollten Sie mehrere Computer oder Profile verwenden, müssen Sie den Ordner in jedem Profil ausblenden.

Während Sie die MFCMAPI verwenden können, um die Eigenschaft „ausgeblendeter Ordner“ manuell zu ändern, haben wir ein PowerShell-Skript und ein VBA-Makro entwickelt, mit denen Sie Ordner ausblenden können. Die Ausführung beider Skripte dauert nur ein paar Sekunden. Der Vorteil von VBA ist, dass Sie eine Schaltfläche in der Multifunktionsleiste erstellen können, die ausgeführt wird, wenn Outlook den Ordner ausblendet. Der Vorteil von PowerShell ist, dass Sie die Sicherheitseinstellungen des Makros nicht ändern müssen.

VBA Möglichkeiten

Möglichkeit 1: Ordner ausblenden mit VBA

Mit VBA können Sie die Eigenschaft eines Ordners ändern, um ihn auszublenden. Der folgende VBA-Code zeigt, wie das geht:

Sub OrdnerAusblenden()
Dim olNamespace As Outlook.Namespace
Dim olFolder As Outlook.Folder
Dim olPropertyAccessor As Outlook.PropertyAccessor

' Zugriff auf das Namespace-Objekt und den gewünschten Ordner
Set olNamespace = Application.GetNamespace("MAPI")
Set olFolder = olNamespace.Folders("IhreMailbox@beispiel.de").Folders("Kalender") ' Ändern Sie den Pfad entsprechend

' Zugriff auf die Eigenschaften des Ordners
Set olPropertyAccessor = olFolder.PropertyAccessor

' Ausblenden des Ordners durch Setzen der PR_ATTR_HIDDEN-Eigenschaft
Const PR_ATTR_HIDDEN As String = "http://schemas.microsoft.com/mapi/proptag/0x10F4000B"
olPropertyAccessor.SetProperty PR_ATTR_HIDDEN, True

MsgBox "Der Ordner wurde erfolgreich ausgeblendet."
End Sub

Erklärung:

  • olNamespace: Verbindet sich mit dem MAPI-Namespace.
  • olFolder: Verweist auf den gewünschten Ordner.
  • olPropertyAccessor: Ermöglicht den Zugriff auf die Eigenschaften des Ordners.
  • PR_ATTR_HIDDEN: Setzt die Eigenschaft des Ordners so, dass er ausgeblendet wird.

Passen Sie den Pfad zum Ordner entsprechend Ihrer Ordnerstruktur an.

Möglichkeit 2: Ordner in eine neue Gruppe verschieben und ausblenden

Sie können auch eine neue Gruppe im Navigationsmodul erstellen, die gewünschten Ordner dorthin verschieben und sie dann ausblenden. Hier ist der VBA-Code dafür:

Sub OrdnerVerschiebenUndAusblenden()
Dim olNamespace As Outlook.Namespace
Dim olFolder As Outlook.Folder
Dim olNewGroup As Outlook.NavigationGroup
Dim olNavModule As Outlook.CalendarModule
Dim olNavGroups As Outlook.NavigationGroups

' Zugriff auf das Namespace-Objekt und den gewünschten Ordner
Set olNamespace = Application.GetNamespace("MAPI")
Set olFolder = olNamespace.Folders("IhreMailbox@beispiel.de").Folders("Kalender") ' Ändern Sie den Pfad entsprechend

' Zugriff auf das Navigationsmodul und die Navigationsgruppen
Set olNavModule = Application.ActiveExplorer.NavigationPane.Modules.GetNavigationModule(olModuleCalendar)
Set olNavGroups = olNavModule.NavigationGroups

' Erstellen einer neuen Gruppe
Set olNewGroup = olNavGroups.Add("Versteckte Ordner")

' Verschieben des Ordners in die neue Gruppe
olNavGroups.Item("Versteckte Ordner").NavigationFolders.Add olFolder

MsgBox "Der Ordner wurde in die neue Gruppe verschoben."

' Optional: Ausblenden des Ordners
Call OrdnerAusblenden
End Sub

Erklärung:

  • olNamespace: Verbindet sich mit dem MAPI-Namespace.
  • olFolder: Verweist auf den gewünschten Ordner.
  • olNavModule: Verweist auf das Kalender-Navigationsmodul.
  • olNavGroups: Verweist auf die Navigationsgruppen.
  • olNewGroup: Erstellt eine neue Gruppe namens “Versteckte Ordner”.
  • OrdnerAusblenden: Ruft die vorherige Subroutine auf, um den Ordner auszublenden.

Kombination von VBA und PowerShell

Manchmal ist es effizienter, PowerShell zu verwenden, insbesondere für komplexere Aufgaben. Sie können PowerShell-Skripte direkt aus VBA heraus aufrufen.

Beispiel: PowerShell-Skript zum Ausblenden eines Ordners

Erstellen Sie zunächst ein PowerShell-Skript, das einen Ordner ausblendet. Speichern Sie das folgende Skript als AusblendenOrdner.ps1:

# AusblendenOrdner.ps1
param (
[string]$MailboxName,
[string]$FolderName
)

Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$Mailbox = $Namespace.Folders.Item($MailboxName)
$Folder = $Mailbox.Folders.Item($FolderName)

$PropertyAccessor = $Folder.PropertyAccessor
$PR_ATTR_HIDDEN = [Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition]::new([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::InternetHeaders, "PR_ATTR_HIDDEN", [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Boolean)
$PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10F4000B", $true)

VBA-Code zum Ausführen des PowerShell-Skripts

Der folgende VBA-Code führt das oben erstellte PowerShell-Skript aus:

Sub RunPowerShellScript()
Dim shell As Object
Dim powerShellScriptPath As String
Dim mailboxName As String
Dim folderName As String
Dim command As String

' Pfad zum PowerShell-Skript
powerShellScriptPath = "C:\Pfad\zu\AusblendenOrdner.ps1"

' Name der Mailbox und des Ordners
mailboxName = "IhreMailbox@beispiel.de"
folderName = "Kalender"

' PowerShell-Befehl
command = "powershell.exe -ExecutionPolicy Bypass -File """ & powerShellScriptPath & """ -MailboxName """ & mailboxName & """ -FolderName """ & folderName & """"

' Shell-Objekt erstellen und PowerShell-Skript ausführen
Set shell = CreateObject("WScript.Shell")
shell.Run command, 0, True

MsgBox "Das PowerShell-Skript wurde erfolgreich ausgeführt."
End Sub

Erklärung:

  • PowerShell-Skript: Nimmt zwei Parameter (Mailbox-Name und Ordner-Name) und blendet den Ordner aus.
  • VBA-Makro: Führt das PowerShell-Skript aus und übergibt die erforderlichen Parameter.

Zusammenfassung

Mit diesen Methoden können Sie die Ansicht Ihrer Kalender- und Kontaktordner in Outlook optimieren. Sie können entweder VBA verwenden, um die Ordner direkt auszublenden, oder eine Kombination aus VBA und PowerShell nutzen, um erweiterte Aufgaben zu automatisieren. Passen Sie die Pfade und Namen in den Codeschnipseln entsprechend Ihrer Umgebung an.

 

Outlook-Ordner wiederherstellen: Einen ausgeblendeten Ordner einblenden

Wenn Sie einen Ordner in Outlook ausgeblendet haben und diesen nun wieder einblenden möchten, können Sie dies mit MFCMAPI oder OutlookSpy erledigen. Diese Tools ermöglichen den Zugriff auf erweiterte MAPI-Eigenschaften von Outlook-Ordnern.

Methode 1: MFCMAPI verwenden

MFCMAPI ist ein Tool zur Problembehandlung in Microsoft Outlook und Microsoft Exchange. Es bietet eine Schnittstelle, um auf MAPI-Ordner und -Elemente zuzugreifen und diese zu bearbeiten.

Schritt-für-Schritt-Anleitung

  1. MFCMAPI herunterladen und öffnen:
    • Laden Sie MFCMAPI herunter und installieren Sie es.
  2. Outlook-Sitzung starten:
    • Öffnen Sie MFCMAPI.
    • Gehen Sie zu Session > Logon.
    • Wählen Sie Ihr E-Mail-Konto und klicken Sie auf OK.
  3. MDB_ONLINE Flag setzen:
    • Doppelklicken Sie auf das E-Mail-Konto.
    • Gehen Sie zu Tools > Options und wählen Sie „Use the MDB_ONLINE flag when calling OpenMsgStore“.
    • Schließen und öffnen Sie den Dialog erneut.
  4. Ordner finden und PR_ATTR_Hidden ändern:
    • Erweitern Sie den Root Container.
    • Erweitern Sie „Top of Information Store“.
    • Wählen Sie den Ordner aus, den Sie wieder einblenden möchten.
    • Doppelklicken Sie auf die „PR_ATTR_Hidden…“ Eigenschaft.
    • Aktivieren Sie „Boolean“ und klicken Sie auf OK.
  5. Outlook und OWA überprüfen:
    • Wenn Sie Exchange oder Office 365 verwenden, überprüfen Sie, ob der Ordner in OWA (Outlook Web Access) nicht angezeigt wird.
    • Deaktivieren Sie „Boolean“ und klicken Sie auf OK, um den Ordner wieder anzuzeigen.
  6. Outlook neu starten:
    • Starten Sie Outlook, um die Änderungen zu übernehmen.

Methode 2: OutlookSpy verwenden

OutlookSpy ist ein weiteres leistungsfähiges Tool, um auf erweiterte Outlook-Eigenschaften zuzugreifen.

Schritt-für-Schritt-Anleitung

  1. OutlookSpy herunterladen und installieren:
    • Laden Sie OutlookSpy  herunter und installieren Sie es.
  2. Outlook starten und OutlookSpy öffnen:
    • Öffnen Sie Outlook.
    • Klicken Sie in OutlookSpy auf IMAPIFolder.
  3. Ordner auswählen und PR_ATTR_Hidden ändern:
    • Wählen Sie den Ordner aus, den Sie einblenden möchten.
    • Suchen Sie die „PR_ATTR_Hidden…“ Eigenschaft.
    • Setzen Sie das „Boolean“-Feld auf False.
  4. Outlook neu starten:
    • Schließen Sie Outlook und starten Sie es neu, um die Änderungen zu übernehmen.

Zusammenfassung

Das Wiederherstellen eines ausgeblendeten Ordners in Outlook erfordert den Zugriff auf die erweiterte MAPI-Eigenschaft „PR_ATTR_Hidden“. Mit Tools wie MFCMAPI oder OutlookSpy können Sie diese Eigenschaft ändern und den Ordner wieder sichtbar machen. Folgen Sie den obigen Anleitungen, um diesen Vorgang erfolgreich durchzuführen.

 

-

Vorheriger Artikel Nächster Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

CAPTCHA eingeben * Das Zeitlimit ist erschöpft. Bitte CAPTCHA neu laden.