VBA Outlook 2003 Auslesen E-Mail Empfänger

Hallo zusammen.

Ich habe bereits einen Code fertig, mit dem ich aus einem bestimmten Ordner in Outlook alle E-Mails auslesen kann. Der Name der sich ergebenden msg-Datei ergibt sich durch:

Set myItems = Folder.Items
For Each myItem In myItems
Pfad = „P:\Kunden\XXXXXXYYYYYY\Rechnungen“
Dim empfaenger As ???
empfaenger = ???
If Right(empfaenger, 12) „xxxxxxyyyyyy.de“ Then
Else
strFileName = Format(myItem.ReceivedTime, „yyyymmdd hhmm“) & " " & myItem.SenderName & " " & myItem.Subject
myItem.BodyFormat = olFormatHTML
speicher_pfad = Pfad & CleanString(strFileName) & „.msg“
If Dir(speicher_pfad, vbDirectory) = „“ Then
myItem.SaveAs speicher_pfad, olMSG
Else
End If
End If
Next

Allerdings will ich nur diejenigen E-Mails kopieren, die eben an das Unternehmen XXXXXXYYYYYY geschickt werden (düfr die Variable empfaenger). Gibt es ähnlich zu myItem.SenderName eine Möglichkeit, die Adresse des E-Mail-Empfängers auszulesen? Alternativ nehme ich auch gerne etwas komplizierteres.

Schon mal Danke im Voraus.

Nachfragen

Ich habe bereits einen Code fertig, mit dem ich aus einem
bestimmten Ordner in Outlook alle E-Mails auslesen kann. Der
Name der sich ergebenden msg-Datei ergibt sich durch:

Hallo kackei,

OL-Vba kann ich nicht so, verzeih also einige nachfragen meinerseits.
Dieser OL-Ordner, ist das ein Ausgangs- oder ein Eingangsordner?

Bei Ausgangsordner, willst du da die mailadressen an die gesendet wurde oder diejenigen Mailadressen die als Absender dieser Mails gelten.

Bei Eingangsordner, willst du da die mailadressen derer die die mails gesendet haben oder die mailadressen an die sie sie geschickt hatten?

Und, rufst du diesen Code in OL auf oder in einem anderen MS-Produkt?
Bzw. wohin soll das Ergebnis, also eine Adfressenliste kopiert oder sonstwas werden?

Gruß
Reinhard

Hallo Reinhard.

Der Ordner ist ein interner (öffentlicher) (Eingangs)Ordner, in dem die Mails per BCC gesammelt werden. Von dort aus, sollen die Mails dann auf unseren Server kopiert werden. Ich brauche nun die Original-E-Mail-Adresse (To) - wenn es geht auch CC. Bei mehreren ursprünglichen Zieladressen will ich jede einzelne Adresse prüfen, ob der gesuchte Provider (Kunde XXXXXXYYYYYY) dabei ist, um dann die Mail sofort zu verschieben. Ist der Kunde nciht dabei, soll ie Mail nciht abgespeichert werden.

Der Code läuft direkt unter OL. Sollte es eine Möglichkeit geben, das Ganze auch aus EXCEL laufen zu lassen, würde mich das noch mehr freuen, weil ich es dann nachts automatisiert durchführen könnte. Klingt für mich jedoch um einiges komplizierter, weil ja dabei auf den Exchange-Server zugegriffen werden müsste, oder nicht?

Die Empfängeradresse dient nur der Filterung, da in dem Ordner E-Mails an verschiedene Kunden gesammelt werden.

Grüße.

Der Code läuft direkt unter OL. Sollte es eine Möglichkeit
geben, das Ganze auch aus EXCEL laufen zu lassen, würde mich
das noch mehr freuen, weil ich es dann nachts automatisiert
durchführen könnte. Klingt für mich jedoch um einiges
komplizierter, weil ja dabei auf den Exchange-Server
zugegriffen werden müsste, oder nicht?

Hallo Kackei,

auf meinem EinzelPC habe ich keinen ExchangeServer, glaub :smile:
Ich weiß auch nicht ob das wichtig ist. Man liest ja einen Ordner aus der sich wohl auf einer Festplatte befindet.

Das mal weglassend kann man schon innerhalb der 30 MS-Programme die Vba in sich haben diese gegenseitig starten lassen.

Das geht z.B. mit Getobject und createobject.
Hier mal ein Kurzbeispiel für Excel, Word usw.

Sub OL()
Dim objOL As Outlook.Application
Set objOL = CreateObject("Outlook.Application")
With objOL
 .CreateItem(0).Display
End With
End Sub

In einem OL-Code kannst du schreiben
CreateItem(0).Display
das ergibt dann die Ansicht einer neuen Mail.

Das Gleiche kannst du auch mit einem Excelcode erreichen, mußt halt wie gezeigt die With-Schleife drumrumbasteln und den Punkt vor die Codezeile setzen.

D.h. wenn du in diese With-Schleife deinen relevanten OL-Code reeinpackst und überall einen Punkt davor setzt müßte das klappen, so sagt die Theorie :smile:

Gruß
Reinhard

Hallo Reinhard.

Sub OL()
Dim objOL As Outlook.Application
Set objOL = CreateObject(„Outlook.Application“)
With objOL
.CreateItem(0).Display
End With
End Sub

Zwei Fragen zu deinem Code.

  1. Wenn ich obigen Code in Excel implementiere und versuche zu starten, dann kommt die Fehlermeldung, dass „Dim objOL As Outlook.Application“ beim Komplimieren nicht als benutzerdefinierter Typ definiert ist.

  2. Gesetzt den Fall, ich kann meinen bisherigen Code über Excel starten, dann bleibt mir immer noch das Problem, dass ich noch nciht ganz weiß, wie ich die E-Mail-Adresse des Adressaten herausbekomme. „CreateItem(0).Display“ erzeugt mir ein neues Fenster zum Schreiben einer E-Mail. Ich schätze mal, dass ich hier ansetzen kann, um über die Reply-Funktion die Adressaten auszulesen?

Grüße.

Grüezi kackei

  1. Wenn ich obigen Code in Excel implementiere und versuche zu
    starten, dann kommt die Fehlermeldung, dass „Dim objOL As
    Outlook.Application“ beim Komplimieren nicht als
    benutzerdefinierter Typ definiert ist.

Das ist so weil der Verweis nicht gesetzt ist, sollte aber so umgangen werden können:

Dim objOL As Object

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Kackei,

  1. Wenn ich obigen Code in Excel implementiere und versuche zu
    starten, dann kommt die Fehlermeldung, dass „Dim objOL As
    Outlook.Application“ beim Komplimieren nicht als
    benutzerdefinierter Typ definiert ist.

mein Fehler, ich hatte den Verweis gesetzt auf
Microsoft Office Outlook X.0 Object Library

Das hat dann den Vorteil die IntelliSense hilft dir.
Mache mal in der With-Schleife am Zeilenbeginn einfach mal einen Punkt…

  1. Gesetzt den Fall, ich kann meinen bisherigen Code über
    Excel starten, dann bleibt mir immer noch das Problem, dass
    ich noch nciht ganz weiß, wie ich die E-Mail-Adresse des
    Adressaten herausbekomme. „CreateItem(0).Display“ erzeugt mir
    ein neues Fenster zum Schreiben einer E-Mail. Ich schätze mal,
    dass ich hier ansetzen kann, um über die Reply-Funktion die
    Adressaten auszulesen?

Das mit CreateItem war nur ein Beispiel, sowas nimmt man wenn man mit Excel/Word über OL mailen will.
Das bietet viel mehr Möglichkeiten als dieses Sendmail in Excel-Vba.

Um deine eigentliche Anfrage, also das Auslesen von Adressen habe ich mich bislang noch gar nicht gekümmert :frowning:
Ich wollte erstmal genau abklären welche Adresen genau du haben willst.

Gruß
Reinhard