Office: Emailinhalt in Excel einlesen

Helfe beim Thema Emailinhalt in Excel einlesen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe ein (hoffentlich eher simples) Problem: Es werden bestimmte Emails in einem Ordner (außerhalb Outlook) als .msg... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von JayDee87, 8. Mai 2012.

  1. JayDee87 Neuer User

    Emailinhalt in Excel einlesen


    Hallo zusammen,

    ich habe ein (hoffentlich eher simples) Problem:

    Es werden bestimmte Emails in einem Ordner (außerhalb Outlook) als .msg gespeichert. Sagen wir der Einfachheit halber auf dem Desktop.
    Wie kann ich über ein VBA-Makro in Excel, eine Mail namens "Test", die auf dem Desktop liegt, per VBA auslesen (z.B. das "AN" - Feld oder die Betreffzeile) und den jeweiligen Inhalt in bestimmte Zellen der Excel-Tabelle schreiben?

    Danke und Gruß
    JayDee87
     
    JayDee87, 8. Mai 2012
    #1
  2. miriki Erfahrener User
    Das hängt stark davon ab, was genau sich hinter dem Format .msg verbirgt. Könntest Du mal eine Dummy-Mail im .msg Format hochladen?

    Ich hoffe (und vermute), daß es letztendlich nur normaler Text ist. Wenn die abgespeicherte Mail sich an die entsprechenden RFCs hält, dann sind dort am Anfang zeilenweise die Header enthalten, jeweils in der Form (aber nicht der Reihenfolge):
    TO: xxxxx
    FROM: xxxxx
    SUBJECT: xxxxx
    [... etliche mehr ...]

    Die Header sind vom Body der Mail dann durch eine Leerzeile getrennt, wenn ich mich recht entsinne. Die Signatur sollte dann auch noch mit "-- " (Leerzeichen beachten!) abgetrennt sein.

    Wenn dem so ist, läßt sich relativ simpel ein kleines Makro basteln, daß die Header scannt und aufteilt.

    Gruß, Michael
     
    miriki, 9. Mai 2012
    #2
  3. miriki Erfahrener User
    Hat mir jetzt doch keine Ruhe gelassen, deswegen im Anhang mal ein Ansatz, wie es vielleicht gehen könnte...

    Gruß, Michael
     
    miriki, 9. Mai 2012
    #3
  4. JayDee87 Neuer User

    Emailinhalt in Excel einlesen

    Hallo Michael,

    erstmal vielen Dank für Deine Hilfe und den angehängten Code. Da du den leider nicht kommentiert hast, ist mir nicht ganz klar, was da a manchen Stellen passiert. Vielleicht drücke ich meine Anforderung nochmal etwas anders aus:

    Ich brauche neben dem Header etc. noch eine ganze Reihe anderer Felder (auch Steuerelemente wie Optionbuttons, Checkboxes), die ausgeselen werden sollen.
    Was ich bisher reasiert habe, ist der Zugriff auf den Outlook-Ordner, wo die Mails bzw. die Formulare liegen:

    Set ol = CreateObject("Outlook.Application")
    Set olNameSpace = ol.GetNamespace("MAPI")
    Set olFolder = olNameSpace.GetDefaultFolder(6)
    Set olSubFld = olFolder.Folders("Name1").Folders("Name2")

    'Loop über alle Elemente des Ordners
    For i = 1 To olSubFld.Items.Count

    'Berücksichtigung der ersten beiden Zeichen: x_
    'If Mid(Dateiname, 0, 2) = "x_" Then
    If olSubFld.Items(i).UserProperties("Wert1") = "a" Then...


    Auf alles weitere kann ich dann zugreifen. Z.B. Betreff: olSubFld.Items(i).Subject usw.
    Ich müsste jetzt eigentlich "nur noch" statt des Outlook-Ordners, einen Ordner auf der Festplatte (z.B. auf dem Desktop oder sonstwo) ansprechen. Das ist das letzte Puzzle-Stück. Da hilft mir dein Code wohl nicht weiter. Hast du mein Anliegen jetzt besser verstanden? Hast du (oder jemand anderes) evtl. eine Lösung?

    Gruß
    JD
     
    JayDee87, 9. Mai 2012
    #4
  5. miriki Erfahrener User
    Der Wunsch / Die Frage
    und das bislang realisierte
    sind ungefähr das, was ich "diametral entgegengesetzt" nennen würde. ;-)

    Wenn Du per OLE oder COM direkt auf Outlook zugreifst, dann hat eine auf dem Desktop abgespeicherte Mail mal so ungefähr gar keine Wirkung. Das ist dann so, als wenn Du Dir 'ne Flasche Bier aus'm Kühler nimmst, auf den Tisch stellst und dann in die Kneipe auf ein Gezapftes gehst. ;-)

    Nö, den hab ich nicht groß kommentiert. Die paar Zeilen sind aber eigentlich nicht allzu wild. Letztendlich passiert nur:
    - Einlesen der Parameter, u.a. Pfad und Name der Mail-Datei
    - Einlesen der Mail-Datei bis zum Ende der Header
    - per SELECT CASE Entscheidung, ob der Header im Blatt angezeigt werden soll.

    die Zeile
    Code:
    Case Else: HeaderDisplay = False
    auf "True" geändert sorgt dafür, daß alle Header (mit den dazugehörigen Werten natürlich...) angezeigt werden.

    Da ich kein Outlook verwende, muß ich ansonsten hier mal an jemand weiterreichen, der sich damit auskennt. Mir macht das LotusNotes-OLE und COM schon Probleme genug.

    Gruß, Michael
     
    miriki, 9. Mai 2012
    #5
  6. JayDee87 Neuer User
    danke Michael. Das käme dann allenfalls als Notlösung in Betracht. Da ich aber denke, dass das öffnen einer msg.-Datei aus Excel heraus mit auslesen diverser Felder und Steuerobjekte möglich sein dürfte, hoffe ich, dass sich noch jemand anderes hierzu meldet.
     
    JayDee87, 9. Mai 2012
    #6
  7. miriki Erfahrener User
    Naja, das Einlesen macht ja der Source von mir. Aber... Ich schätze... Du würfelst da 2 Sachen etwas durcheinander, weswegen die Sache etwas diffuser wird:

    a) Eine .msg auslesen ist eine Sache. Da öffnet man die Datei, liest sie in irgendeiner Form ein, entscheidet über die Verarbeitung des Inhalts und gut ist.

    b) Über OLE / COM wird keine Datei ausgelesen! Damit wird die Anwendung angesprochen, die die Informationen verwaltet. Und über die Hierarchie des Objekts werden einzelne Elemente bis hinunter zur Mail, weiter darunter noch die einzelnen Header, angesprochen. Wo und in welcher Form die Anwendung die Daten gespeichert hat, ist dabei völlig unerheblich. Das kann in binären .pst-Containern sein, das können einzelne Reintext .msg sein, das kann eine MySql-Datenbank im internet sein, ... Das schöne ist, daß einen das eben überhaupt nicht interessieren muß.

    Entscheidend ist, daß man die Header z.B. eben als "Eigenschaft" der darüber liegenden Mail anspricht. Die Mail wiederum ist ein Element in einem Postfach-Container. Das Postfach ist Element einer Liste (Baumstruktur) von Postfächern. Die Postfach-Liste ist Bestandteil der Anwendung. (Das war jetzt mal so wild gesponnen, aber grob so wird der Aufbau irgendwie sein.) Ansprechen kann man die Elemente dann z.B. so:
    Mails(42).Headers("Subject").Value
    oder in ausführlicherer Schreibweise:
    objOutlook.Mailfolders("Inbox").Mails(42).Headers("Subject").Value

    Das ganze ist aber grundlegend anders, als das "Auslesen einer Datei"...

    Gruß, Michael
     
    miriki, 9. Mai 2012
    #7
  8. JayDee87 Neuer User

    Emailinhalt in Excel einlesen

    Den Zugriff auf die Mails / Formulare in einem Postfach habe ich ja auch schon. Das ist aber nicht das was ich brauche. Allerdings habe ich in Zwischenzeit etwas herausgefunden:

    Function MSGOpen()

    Dim strPathName As String
    Dim objMailItem As Outlook.MailItem
    Dim objMailOLApp As Outlook.Application

    strPathName = "C:\Users\R893198\Desktop\test.msg"
    Set objMailOLApp = New Outlook.Application
    Set objMailItem = objMailOLApp.CreateItemFromTemplate(strPathName)

    Hiermit lässt sich die .msg öffnen und auch auslesen. Das wäre also erledigt Leider hat sich nun ein anderes Problem ergeben:

    mit: objMailItem.Subject kann ich die Betreffzeile auslesen. auch die anderen Standardfelder (.To, .CC, .body, ...) sind kein Problem.

    Frage: wie kann ich den Wert eines Optionbuttons auslesen?
    z.B. für folgenden Optionbutton
    Name: OptionButton_offen
    Feld auswählen: Rest
    zu verwende Eigenschaft: Value
    Wert: offen

    objMailItem.UserProperties("Rest") müsste dann ja "offen" zurückgeben, falls markiert. Ich bekomme da allerdings die Fehlermeldung:
    "Objektvariable oder With-Blockvariable nicht festgelegt."
    gleiches gilt für:
    objMailItem.GetInspector.ModifiedFormPages("Nachricht").Controls("OptionButton_offen").Value

    kann mir da jemand helfen?
     
    JayDee87, 9. Mai 2012
    #8
Thema:

Emailinhalt in Excel einlesen

Die Seite wird geladen...
  1. Emailinhalt in Excel einlesen - Similar Threads - Emailinhalt Excel einlesen

  2. Makro 4.0 in Excel 2019

    in Microsoft Excel Hilfe
    Makro 4.0 in Excel 2019: Guten Tag. Habe ein Ferienpunkteberechnungs Programm in Makro 4.0 schon seit Jahren. Jetzt habe ich es angepasst und Excel 2019 installiert. Es funktioniert alles so wie es sein soll. Nach der...
  3. Die Herausforderung oder Wunschtraum eines irren...

    in Microsoft Excel Hilfe
    Die Herausforderung oder Wunschtraum eines irren...: Moin liebe Gemeinde, bevor ich nun mein Laptop gegen die Wand schmeiße, habe ich mir gedacht, versuchst du es mal mit dem Schwarmwissen der Gemeinde hier. Meine Kenntnisse sind eher bescheiden...
  4. Diagramm in Excel 2019 Pro (Windows 10 Pro)

    in Microsoft Excel Hilfe
    Diagramm in Excel 2019 Pro (Windows 10 Pro): Hallo liebe Helfer, ich versuche seit Tagen in einem Diagramm die Beschriftung der x-Achse zu formatieren. In der zugehörigen Tabelle gibt es 3 Spalten, wobei die 1. Spalte ein Datum + Uhrzeit...
  5. csv Import Tabelle mit viel Inhalt in einer Zelle

    in Microsoft Excel Hilfe
    csv Import Tabelle mit viel Inhalt in einer Zelle: Hallo, ich habe bei mir auf Arbeit ein sehr altes Informationssystem in dem wir unser Aktenarchiv organisiert haben. In diesem Archivsystem sind Informationen enthalten wie der zeitliche Umfang...
  6. Daten Kopieren aus einer zweiten Datei

    in Microsoft Excel Hilfe
    Daten Kopieren aus einer zweiten Datei: Ich weiss nicht ob dies Hier schon existiert. Leider habe ich noch nichts gefunden. Ich habe eine Excel Datei (Kunden Angaben) und eine zweite Datei (Mappe1). Wenn beide geöffnet sind kann ich aus...
  7. E-Mail Automatisierung Funktioniert nur bis zur zweiten E-Mail.

    in Microsoft Excel Hilfe
    E-Mail Automatisierung Funktioniert nur bis zur zweiten E-Mail.: Diese E-Mail Automatisierung hat bereits Funktioniert nur seit heute kann ich maximal zwei E-Mails versenden. VBA Code: Sub Senden() Dim ol As Outlook.Application Dim olm As Outlook.MailItem...
  8. SVERWEIS beim Kopieren nur eine Zeile weiter

    in Microsoft Excel Hilfe
    SVERWEIS beim Kopieren nur eine Zeile weiter: Liebe Community, ich verzweifle ein bisschen und vielleicht ist meine Idee auch gar nicht umsetzbar. Ich habe auf einem Tabellenblatt ein paar Namen untereinander. Nun möchte ich auf einem...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden