Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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
Antworten 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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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
Antworten 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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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
Antworten 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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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)
Antworten 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?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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)
Antworten Top


Gehe zu:


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