Outlook-Workshop - Ordner löschen - Teil 1
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.