Automatisches Auslesen von Mails

Moderator: ModerationP

Automatisches Auslesen von Mails

Beitragvon Gast » 08. Aug 2018, 13:37

Hallo zusammen,

ich hoffe dass ich hier im Outlook-Forum richtig bin: Ich lese über Access eMails aus Outlook aus. Dazu wechsle ich in das entsprechende "Verzeichnis" und laufe mittels einer Schleife jede Mail durch, um Sie in eine Datenbank zu schreiben. Das hat immer soweit funktioniert, jedoch bekomme ich in letzter Zeit vereinzelt das Problem, dass ich sporadisch den Lauftzeitfehler "Type mismatch" in der Zeile "Next mItem" bekomme. Wenn ich das prüfe, ist mItem mit "Nothing" belegt. :doubt:

Wenn ich die Codeausführung mit F5 fortsetzen möchte, geht das wegen dem bestehenden Laufzeitfehler wie gewohnt nicht. Über Einzelschritt mit F8 geht es seltsamerweise jedoch und er läuft die Schleife komplett durch.

Ich bin hier etwas überfragt: Warum ist ein MailItem plötzlich "Nothing"? In der Schleife kann doch nicht ein "nicht existierendes" MailItem dazwischen sein? Und warum übergeht er den Laufzeitfehler bei Einzelschrittausführung des Codes?

Code: Alles auswählen
Set olApp = CreateObject("Outlook.application")
Set olDir = olApp.GetNamespace("MAPI").GetFolderFromID(mapiFolderId)

For Each mItem In olDir.Items

    If TypeName(mItem) = "MailItem" Then
       
        execSql ("insert into tbl_mail_picker (senderName, sentOn, Subject, AttachmentCount, boxName, conversationIndex, storeId) values " & _
        "('" & mItem.SentOnBehalfOfName & "','" & mItem.SentOn & "','" & mItem.subject & "'," & mItem.attachments.count & ",'" & comboMailPickerFolder & _
        "','" & mItem.conversationIndex & "','" & mapiFolderId & "')")
       
    End If
   
Next mItem


Vielen Dank für einen Rat!
Gast
 

Re: Automatisches Auslesen von Mails

Beitragvon DerHoepp » 08. Aug 2018, 16:37

Hallo Gast,

wie hast du mItem dimensioniert?

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7125
Registriert: 14. Mai 2013, 11:08

Re: Automatisches Auslesen von Mails

Beitragvon Gast » 09. Aug 2018, 09:16

Hallo derHöpp,

Code: Alles auswählen
Dim mItem As Outlook.MailItem


Habe hier auch schon getestet - ich kann es auch als "Object" deklarieren: gleicher Fehler. Ich habe jedoch noch ein wenig rumprobiert: Ich glaube dass es nicht an der Programmierung, sondern an einer bestimmten Mail liegt. Beim Lesen der Mails eines anderen Ordners (auf die Idee kam ich irgendwie vorher nicht, da ich dachte es ist ein Fehler im Code) funktioniert es einwandfrei.
Gast
 

Re: Automatisches Auslesen von Mails

Beitragvon mmarkus » 09. Aug 2018, 16:11

Das Problem ist doch, dass du nur einen Codeauszug zeigst und das Wesentliche nicht zu sehen ist.

Wer deklariert eine Varialbe als MailItem und prüft dann ob es ein MailItem ist?
Der Code führt immer dann zu einem Fehler, wenn ein Objekt kein Mail ist und das ist halt immer wieder mal der Fall.
Daher darf man die Variable nur als Object deklarieren - dann macht die Prüfung auch einen Sinn.

Und vor allem solltest du einen Code zeigen, bei dem man nicht nicht 10 mal nachfragen muss, bis das Wesentliche klar ist.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1025
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Michael Bauer und 2 Gäste