thomas1972
Goto Top

Per VBA Postfach Outlook durchsuchen in umgekehrter Reihenfolge

Hallo,

habe folgendes Problem,
ich lasse bestimmte Postfächer durchsuchen und eine Access Tabelle eintragen.
Problem hierbei das durchsuchen geht immer von der neues zur ältesten Mail.

Hier liegt das Problem das ich sogn Problemanfragen und Problemlösungen erhalte, nur ist die Problemlösung in der Reihenfolge vor der Problemanfrage.

Aktuell behelfe ich mir, das Postfach 2x durchsuchen zu lassen.
So das im ersten Rundlauf erkannt wird dass ein Problemanfrage da ist und bei zweiten Rundlauf die Problemlösung hierzu erkannt wird.
Nur bei über 14000 Mails dauet dieses unterfangen immer relativ lange.

Daher meine Frage: besteht die Möglichkeit per VBA die Reihenfolge des durchsuchen zu ändern, sprich von ältester Email zu neusten?

Ich hoffe hier kann mir jemand helfen.

Grüße aus München
Thomas

Content-ID: 354795

Url: https://administrator.de/contentid/354795

Ausgedruckt am: 15.11.2024 um 05:11 Uhr

MrCount
MrCount 14.11.2017 um 13:07:01 Uhr
Goto Top
Servus,

vielleicht zeigst du uns mal deinen Code, der die Mailboxen durchsucht?

Ansonsten ist hier mal ein Beispiel, wie man sortieren könnte:
Sub SortByDate() 
  Dim myNameSpace As Outlook.NameSpace 
  Dim myFolder As Outlook.Folder 
  Dim myItem As Outlook.MailItem 
  Dim myItems As Outlook.Items 

  Set myNameSpace = Application.GetNamespace("MAPI")   
  Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 
  Set myItems = myFolder.Items 
  myItems.Sort "[ReceivedTime]"  
  For Each myItem In myItems 
   MsgBox myItem.Subject & " ---- " & myItem.ReceivedTime  
  Next myItem 
 End Sub
thomas1972
thomas1972 14.11.2017 aktualisiert um 17:39:17 Uhr
Goto Top
Hallo vielen Dank für die Info,

sortieren erfolgt nun wie gewünscht.

Was mich wundert, (ist mir bei meinem Code auch schon aufgefallen), dass wenn er das Postfach durchsucht hat immer einen LaufzeitFehler 13 -> Typen unverträglich erzeugt und bei
Next objEMail   (bei Mouseover Hinweis nothing)

stehen bleibt. Kann es am externen Postfach liegen oder können es zu viele Mails sein?
Vielleicht kann jemand erkennen, warum der LaufzeitFehler erzeugt wird..ich habe den Code zum eigentlichen einlesen in den Tabellen weg gelassen. daher deutlich gekürzt.

 Dim db As DAO.Database, rs As DAO.Recordset
     Dim objOutlook As Outlook.Application, objNameSpace As Outlook.NameSpace
     Dim objMailordner As Outlook.MAPIFolder
     Dim objGAINMailordner As Outlook.MAPIFolder
     Dim objAttachment As Outlook.Attachment, objMail As Outlook.Items
     Dim objEMail As Outlook.MailItem
     Dim intCtr As Integer
       
        
     
     Set db = CurrentDb
     
     Set objOutlook = New Outlook.Application
     Set objNameSpace = objOutlook.GetNamespace("MAPI")  

     Set objMailordner = objOutlook.GetNamespace("MAPI").Folders("Problem").Folders("Posteingang")  
   
    Set objMail = objMailordner.Items
    objMail.Sort "[ReceivedTime]"  
     
     For Each objEMail In objMail
     Debug.Print objEMail.Subject & " ---- " & objEMail.ReceivedTime  
         
     Next objEMail
     
     
     End Sub


UPDATE
Konnte mittlerweile feststellen, dass es sich um Emails im Postfach vom Typ KALENDER (zugesagte Besprechungen) bzw. Unzustellbarkeitsmeldungen handelt.

FRAGE: Wie kann ich beim einlesen vorgeben, dass es nur Inhalte vom TYP Mail (Keine Besprechungszusagen) eine Berücksichtigung finden soll, bzw. Mails mit Inhalt unzustellbar ignoriert werden?
134464
134464 15.11.2017 aktualisiert um 08:32:01 Uhr
Goto Top
Prüfe die Klasse des Objects in der Schleife...
Dim itm as Object, objEmail as Mailitem
for each itm in objMail
    If itm.Class = olMail then
        set objEmail = itm
        'Hier geht's weiter  
    End if 
Next