VBA Outllook 2000: markierte Emails löschen

Hallo,

ich hatte die Frage schon einmal vor einiger Zeit gestellt - allerdings konnte mir noch niemand richtig weiterhelfen. Ich suche eine Möglichkeit, wie man mittels VBA in Outlook alle markierten Emails löscht.

Meine bisher gefundene Lösung:

Dim i As Integer
Dim intEmailzähler As Integer

intEmailzähler = Application.ActiveExplorer.Selection.Count

For i = intEmailzähler To 1 Step -1
Set objItem = Application.ActiveExplorer.Selection(i)
objItem.Delete
'Sleep 5000
Next i

löscht ein markiertes Email ohne Probleme - ab zwei gibt er aber eine Fehlermeldung aus.

An sich dürfte es kein Problem sein - ist ja nur eine Kleinigkeit - aber leider funktiert es trotzdem nicht.

Grüße

Stefan

Zusatz:

Als Variante habe ich versucht die Emails einfach in den Ordner gelöschte Objekte zu verschieben. Es klappt wunderbar, wenn ich den Code manuell ausführe. Automatisch jedoch bringt er mir den gleichen Fehler „Clientvorgang fehlgeschlagen“:

Dim i As Integer
Dim intEmailzähler As Integer
Dim TargetFolder As Outlook.MAPIFolder

Set TargetFolder = Application.Session.GetDefaultFolder(olFolderDeletedItems)

intEmailzähler = Application.ActiveExplorer.Selection.Count

For i = intEmailzähler To 1 Step -1
Set objItem = Application.ActiveExplorer.Selection(i)
objItem.Move TargetFolder
’ objItem.Delete
Next i

Weiterhin die Info, dass wir bei uns in der Firma den Microsoft Exchange Server nutzen. Ggf. hat es ja auch damit etwas zu tun - aber an sich dürfte es nicht das Problem sein - schließlich funktioniert das manuelle löschen ja auch.

Was mir aber noch aufgefallen ist: das erste Email der markierten Emails wird richtig gelöscht, bevor die Fehlermeldung kommt. Anschließend bleibt die gleiche Zahl der Emails markiert - es wird einfach das nächste Email im Verzeichnis mit markiert. Vielleicht liegt es auch daran - denn wenn das erste Email gelöscht ist, müßten eigentlich nur noch die vorhandenen Emails der ursprünglichen Markierung markiert sein. Wenn ihr wißt was ich meine…

Grüße

Stefan

Als Variante habe ich versucht die Emails einfach in den
Ordner gelöschte Objekte zu verschieben. Es klappt wunderbar,
wenn ich den Code manuell ausführe. Automatisch jedoch bringt
er mir den gleichen Fehler „Clientvorgang fehlgeschlagen“:

Hi Stefan,

Option Explicit
'
Sub tt()
Dim i As Integer, objItem, intEmailzähler As Integer
intEmailzähler = Application.ActiveExplorer.Selection.Count
For i = intEmailzähler To 1 Step -1
 Set objItem = Application.ActiveExplorer.Selection(i)
 objItem.Delete
 'Sleep 5000
Next i
End Sub

Fehler nicht nachvollziehbar, Code löscht problemlos die markierten Mails im Ordner Posteingang.
Outlook2000 auf Win XP.
Vielleicht liegt das an deinem Exchange, was auch immer das genau ist, noch nie benutzt.
Gruß
Reinhard

Vielleicht liegt es wirklich am Exchange-Server. Die Emails liegen ja nicht direkt auf dem eigenen PC, sondern eben zentral auf dem Server. Vielleicht kann der nicht so schnell löschen, wie es der VBA-Code eben versucht. Allerdings hatte ich auch schon einmal eine Pause eingebaut - trotzdem funktionierte das Löschen nicht.

Wenn man die ausgewählten Emails irgendwie alle auf einmal löschen könnte, dann ginge es vielleicht. Das Problem liegt m.E. an der Durchlaufschleife, die automatisch aus irgendwelchen Gründen nicht abgearbeitet werden kann.

Grüße

Stefan

Fehler nicht nachvollziehbar, Code löscht problemlos die
markierten Mails im Ordner Posteingang.
Outlook2000 auf Win XP.
Vielleicht liegt das an deinem Exchange, was auch immer das
genau ist, noch nie benutzt.
Gruß
Reinhard