Outlook-Workshop - Ordner löschen - Teil 1

In diesem Teil lernen wir, wie man einzelne Ordner löschen kann. Man kann hier einzelne Konten mit allen darin enthaltenen Ordner behandeln, einzelne Ordner eines Kontos oder auch alle Konten mit allen Ordnern.

Kommen wir zuerst zur Prozedur, die die eigenliche Löschung vornimmt.

Private Sub OrdnerLoeschen(Folders As Outlook.Folders, ByVal _
                           bRecursive As Boolean, strName As String)
'****************************************************************** 
'* RMH Software                                                   * 
'* René Holtz, 88131 Lindau                                       * 
'* http://www.rholtz-office.de                                    * 
'* rene.holtz@rholtz-office.de                                    * 
'* (nach einer Vorlage von Michael Bauer.                         * 
'*  http://www.vboffice.de) * 
'****************************************************************** 

Dim olFolders As Outlook.MAPIFolder

For Each olFolders In Folders
    Set Application.ActiveExplorer.CurrentFolder = olFolders
        If olFolders.Name = strName Then olFolders.Delete
           If bRecursive Then
              If olFolders.Folders.Count Then OrdnerLoeschen olFolders.Folders, _
                                              bRecursive, strName
           End If
Next olFolders

End Sub


Beschreibung der Parameter:

Im ersten Parameter (Folders) wird der Name des zu durchsuchenden Kontos übergeben.
Im zweiten Parameter (bRecursive) wird angegeben, ob auch Unterordner durchsucht werden sollen. True = Unterordner einbeziehen, False = Unterordner nicht berücksichtigen.
Im dritten Parameter wird der Name des zu löschenden Ordner übergeben.


Kommen wir nun zu drei Beispielen.

Im ersten Beispiel wird ein bestimmtes Konto behandelt. Es werden alle Ordner und Unterordner berücksichtigt.

Public Sub DeleteFolderInOutlookAccount()
'******************************** 
'* RMH Software                 * 
'* René Holtz, 88131 Lindau     * 
'* http://www.rholtz-office.de  * 
'* rene.holtz@rholtz-office.de  * 
'******************************** 

Dim olApp        As Outlook.Application
Dim olName       As Outlook.Namespace
Dim olFolder     As Outlook.MAPIFolder
Dim strName      As String

If MsgBox("Soll(en) der/die Ordner gelöscht werden?", _
           vbYesNo + vbQuestion, "Löschen?") = vbYes Then
   
   strName = InputBox("Bitte den Namen für zu löschenden Ordner angeben!")

   Set olApp = Application
   Set olName = olApp.GetNamespace("MAPI")
   Set olFolder = olName.Session.Folders("RMH Software")
   
       OrdnerLoeschen olFolder.Folders, True, strName
       DoEvents
       MsgBox "Ordner wurde gelöscht", 64, "Hinweis"
       
   Set olFolder = Nothing
   Set olName = Nothing
   Set olApp = Nothing
   
End If

End Sub


Im zweiten Beispiel wird nur ein bestimmter Ordner im angegebenen Outlook-Konto behandelt. Die Unterordner werden berücksichtigt.

Public Sub DeleteSubFoldersInOutlookAccount()
'******************************** 
'* RMH Software                 * 
'* René Holtz, 88131 Lindau     * 
'* http://www.rholtz-office.de  * 
'* rene.holtz@rholtz-office.de  * 
'******************************** 

Dim olApp        As Outlook.Application
Dim olName       As Outlook.Namespace
Dim olFolder     As Outlook.MAPIFolder
Dim strName      As String

If MsgBox("Soll(en) der/die Ordner gelöscht werden?", _
           vbYesNo + vbQuestion, "Löschen?") = vbYes Then

   strName = InputBox("Bitte den Namen für zu löschenden Ordner angeben!")

   Set olApp = Application
   Set olName = olApp.GetNamespace("MAPI")
   Set olFolder = olName.Session.Folders("RMH Software").Folders("Posteingang")
   
       OrdnerLoeschen olFolder.Folders, True, strName
       DoEvents
       MsgBox "Ordner wurde gelöscht", 64, "Hinweis"
       
   Set olFolder = Nothing
   Set olName = Nothing
   Set olApp = Nothing
   
End If

End Sub


Im dritten Beispiel werden alle Konten und dessen Ordner/Unterordner behandelt.


Public Sub DeleteInAllOutlookAccounts()
'******************************** 
'* RMH Software                 * 
'* René Holtz, 88131 Lindau     * 
'* http://www.rholtz-office.de  * 
'* rene.holtz@rholtz-office.de  * 
'******************************** 

Dim olOldFolder  As Outlook.MAPIFolder
Dim olApp        As Outlook.Application
Dim olName       As Outlook.Namespace
Dim olFolder     As Outlook.MAPIFolder
Dim intFolder    As Integer
Dim strName      As String

If MsgBox("Sollen die Ordner gelöscht werden?", _
           vbYesNo + vbQuestion, "Löschen?") = vbYes Then

   strName = InputBox("Bitte den Namen für zu löschenden Ordner angeben!")

   Set olOldFolder = Application.ActiveExplorer.CurrentFolder
   Set olApp = Application
   Set olName = olApp.GetNamespace("MAPI")

       For intFolder = 1 To olApp.Session.Accounts.Count
           Set olFolder = olApp.Session.Folders(intFolder)
               OrdnerLoeschen olFolder.Folders, True, strName
               DoEvents
           Set olFolder = Nothing
       Next intFolder

   Set olName = Nothing
   Set olApp = Nothing
   Set Application.ActiveExplorer.CurrentFolder = olOldFolder

End If

End Sub



In diesem Teil haben wir gelernt, wie man einzelne Ordner löschen kann. Wie man mehrere Ordner (mit unterschiedlichen Namen) löschen kann, lernen wir im nächsten Teil.