Hallo,
ich könnte mir vorstellen (weiß es aber nicht), dass durch das Löschen eines Items aus der Auflistung die Each-Schleife durcheinander kommt.
Wie als wenn man mit Zähler arbeitet und Zeilen löchen möchte, eine Zeile weglöscht und den Zähler aber nicht um eins zurücksetzt, wird eine Zeile übersprungen.
Hier eine ungetestete Idee:
Public Sub suchen_speichern()
Dim olapp As New Outlook.Application
Dim olmails As Object
Dim ordner As Object
Dim mails As Outlook.MailItem
Dim bCheck As Boolean
anzahl = 0
'wohin speichern?
strPath = Environ("USERPROFILE") & "\Documents\"
Set olapp = CreateObject("Outlook.Application")
Set olmails = olapp.GetNamespace("MAPI")
Set ordner = olmails.GetDefaultFolder(olFolderInbox)
'alle mails im ordner prüfen
suchbegriff = "$$$$$"
Do
bCheck = False
For Each mails In ordner.Items
If InStr(1, mails.Subject, suchbegriff, vbTextCompare) > 0 Then
With mails
strText = Replace(.Subject, "/", "_")
strText = Replace(strText, "!", "")
strText = Replace(strText, ".", "_")
strText = Replace(strText, "\", "_")
strText = Replace(strText, ":", "_")
strText = Replace(strText, "(", "")
strText = Replace(strText, ")", "")
strText = Replace(strText, """", "")
'und abspeichern - olmsg = Outlook-Nachrichtenformat (MSG)
.SaveAs strPath & strText & ".msg", olMSG
.Delete
anzahl = anzahl + 1
bCheck = True: Exit For
End With
End If
Next mails
Loop Until bCheck = False
'fertig
MsgBox "Fertig - " & anzahl & " Mails übertragen"
End Sub
Vielleicht klappt es ja
viele Grüße
Karl-Heinz
|