Aktuell kann es Probleme bei der Anmeldung mit dem Chrome oder Edge Browser geben. Ihr müsstet in die Einstellungen des Browsers gehen und Cache, Cookies und sofern vorhanden, gespeicherte Passwörter vom CEF löschen oder alternativ auf einen anderen Browser ausweichen. Ursache sind vermutlich kürzliche Browserupdates. x

Excel vba: Aus Outlook Daten auslesen
#1
Hallo zusammen,
vielleicht könnt Ihr mir ja mal wieder weiterhelfen?
Ich möchte aus frei wählbaren Outlook-Ordnern Daten wie Mail-Adresse, Datum, Betreff, Empfänger usw. auslesen.
Dazu habe ich dieses Makro im Netz gefunden. Das funktioniert leider nicht immer, kann aber nicht feststellen warum. Ich vermute dass es beim Auslesen des Betreffs manchmal zu dieser Fehlermeldung kommt: Laufzeitfehler: 13 Typen unverträglich.

An dieser Stelle kommt die Fehlermeldung "Next objMsg"

Woran kann dies liegen bzw. wie kann man das Makro dazu bewegen komplett durchzulaufen und keine Informationen zu verschlucken?

Code:
'Benötigt den Verweis auf Microsoft Outlook Object Library

Sub MailsImportieren()
Dim objOutlook As Outlook.Application
Dim objnSpace As Namespace
Dim objFolder As MAPIFolder
Dim objMsg As MailItem
Dim LRow As Long
Dim myAr() As Variant
 
  Set objOutlook = New Outlook.Application
  Set objnSpace = objOutlook.GetNamespace("MAPI")
  Set objFolder = objnSpace.PickFolder ''' Dialog
 
With Sheets("Outlook") 'Tabellennamen anpassen !!!!!!!
 
  'Zellen leer machen für neue Daten
  .Range("A2:D" & .Rows.Count).Clear
 
  'Überschrift
  .Cells(1, 1) = "Absender"
  .Cells(1, 2) = "Datum"
  .Cells(1, 3) = "Betreff"
  .Cells(1, 4) = "Empfänger"
  .Range("A1:D1").Font.Bold = True
 
  'Array Dimensionieren
  ReDim myAr(1 To objFolder.Items.Count, 1 To 4)
 
  'Mails aus Ordner lesen
  For Each objMsg In objFolder.Items
           LRow = LRow + 1
           myAr(LRow, 1) = objMsg.SenderEmailAddress 'Mail- Adresse
           myAr(LRow, 2) = objMsg.ReceivedTime 'Datum
           myAr(LRow, 3) = objMsg.Subject 'Betreff
           myAr(LRow, 4) = objMsg.To 'Empfänger
  Next objMsg
   
  'Daten in Zellen schreiben
  .Range("A2").Resize(LRow, 4) = myAr
  'Breite der Spalten anpassen
  .Columns("A:D").EntireColumn.AutoFit
End With
End Sub

Wäre nett wenn mir jemand einen Tipp geben könnte!

Vielen Dank dafür!
Top
#2
Hallo Erich,

habe ich das richtig verstanden? Markiert wird Next objMsg? Welchen Wert hat die Variable LRow? Wie groß ist objFolder.Items.Count? Wie sieht dein Array myAr im Lokalfenster aus?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Stefan,

sorry dass ich mich jetzt erst melde.

Zu Deinen Fragen:
- Markiert wird Next objMsg
- Variable LRow  hat in meinem Beispiel den Wert "14"
- objFolder.Items.Count = 51

myAr im Lokalfenster:
     : myAr(14,1) : "skazok@syscomgmbh.de" : Variant/String
     : myAr(14,2) : #22.12.2016 11:30:17# : Variant/Date
     : myAr(14,3) : "AW: Bestellung / PROFORMA RECHNUNG" : Variant/String
     : myAr(14,4) : "'Erich Jung'" : Variant/String

Ich hoffe Du kannst damit etwas anfangen.

Nachtrag:
Wenn ich mit Einzelschritt F8 weiter gehe läuft das Makro plötzlich bis zum Ende durch.

Vielen Dank!
Top
#4
Hallo Erich,

wenn dann dein Makro weiterläuft, wie sehen die Einträge in der Tabelle aus, insbesondere der 15. Eintrag. Gebe mal im Direktfenster, wenn die Fehlermeldung kommt,

Code:
?TypeName(objMsg)

ein und drücke Return. Was ist das Ergebnis?
Gruß Stefan
Win 10 / Office 2016
Top
#5
Hallo Stefan,

der 15. Eintrag sieht wie folgt aus - nachdem das Makro mit Einzelschritt weitergeführt wurde:
     : myAr(15,1) : "ejung51@gmx.de" : Variant/String
     : myAr(15,2) : #22.12.2016 14:07:33# : Variant/Date
     : myAr(15,3) : "AW: Bestellung / PROFORMA RECHNUNG" : Variant/String
     : myAr(15,4) : "'S. Kazok - Syscom Electronic GmbH'" : Variant/String

Eingabe im Direktfenster bei der Fehlermeldung:
?TypeName(objMsg)
Ergebnismeldung:
Nothing

Ich hoffe Du kannst daraus etwas ableiten was weiterhilft.
Top
#6
Hallo Erich,

und die einzelnen Werte passen auch so zusammen? (Stichwort: Mail-Adresse und Name) Eigentlich dürfte da kein Nothing kommen.
Gruß Stefan
Win 10 / Office 2016
Top
#7
Hallo Stefan,

ich denke schon dass die Werte zusammenpassen oder wie kann ich Deine Frage verstehen?
Im übrigen kann ich die Werte ja auch nicht beeinflussen, zumindest nicht die von den Mails die ich erhalte.

Hmm, scheint irgendwie seltsam zu sein.
Top
#8
Hallöchen,

in Deinem Postfach / Ordner hast Du eventuell nicht nur E-Mails Sad
Dimensioniere die Variable als Objekt und prüfe in der Schleife, ob es sich um eine E-Mail handelt.

Ist aber trotzdem seltsam, wenn ein Typ-Fehler kommt und Du kannst dann mit F8 weiter machen Huh
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hallo André,

vielen Dank für Deinen Tipp.
Dem Augenschein nach sind das alles emails, aber wie prüft man das?

Die Variable "objMsg" habe ich als Variable deklariert - das Makro steigt jetzt auch wieder aus - jetzt aber nicht an der Stelle Next objMsg
sondern hier myAr(15, 1) = objMsg.SenderEmailAddress 'Mail- Adresse und mit Laufzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht"

Aber nun ist auch mit F8 nichts mehr auszurichten - es läuft jetzt nicht mehr weiter!

Hast Du ev. noch eine Idee?
Top
#10
Hallo Erich,

das ist doch ein Zeichen, dass es sich um keine E-Mail handelt. Hast Du eventuell Aufgaben, Termine oder anderes ?
Schaue mal in der Überwachung auf den Typ.

Überprüfen kannst Du das eventuell so:

If TypeName(objMsg) = "MailItem" Then

End If
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste