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. Abrufliste VBA

    in Microsoft Excel Hilfe
    Abrufliste VBA: Hallo Forum, erstmal kurz vorweg: ich bin neu hier und meine VBA Kentnisse würde ich wit im unteren Bereich ansiedeln (ich bin jedoch sehr lernwillig), habt somit bitte Nachsicht mit mir :D...
  3. Power Query Excel import

    in Microsoft Excel Hilfe
    Power Query Excel import: Hallo zusammen, leider bin ich auf eine kleine Herausforderung gestoßen, wo ich mit Google vorerst nicht weiter komme. Ich möchte eine Excel in Power BI hochladen, jedoch wird im Power Query eine...
  4. Dropdown wenn Bedingung erfüllt, ansonsten Texteingabe

    in Microsoft Excel Hilfe
    Dropdown wenn Bedingung erfüllt, ansonsten Texteingabe: Hallo zusammen, nachdem ich mit Google gescheitert bin, hoffe ich, dass mir jemand von euch helfen kann. Ist es möglich in Excel eine Dropdown-Liste nur dann zur Verfügung zu stellen, wenn...
  5. Diagramm ohne Gitternetzlinien aber mit Skalenstrichen?

    in Microsoft Excel Hilfe
    Diagramm ohne Gitternetzlinien aber mit Skalenstrichen?: Hallo! Bin gerade etwas am verzweifeln, weil ich mir nicht vorstellen kann, dass Excel dafür keine Möglichkeit vorsieht. Ich möchte ein "cleanes" Streudiagramm, ohne Hauptgitter, nur mit den...
  6. Datum mehrzeilig

    in Microsoft Excel Hilfe
    Datum mehrzeilig: Hi Leute, für euch sicher was simpes, aber ich verzweifle. Möchte in Excel ein Datum mehrzeilig Darstellen. Also Dienstag, 18.05.2021 soll mit Zeilenumbruch dargestellt werden. Also so...
  7. Excel: Namen aus Liste in Tabellenblätter Gruppieren

    in Microsoft Excel Hilfe
    Excel: Namen aus Liste in Tabellenblätter Gruppieren: Guten Tag Ich erhalte jede Woche eine Excel Namensliste mit Projektarbeitsstunden. Ich habe 4 Arbeitsblätter erstellt (Gruppe 1 - 4). Bolti: Gruppe 4 Escher: Gruppe 3 Fassers: Gruppe 1...
  8. Fixieren von Zeilen und Spalten in Excel

    in Microsoft Excel Hilfe
    Fixieren von Zeilen und Spalten in Excel: Hallo zusammen Ich habe folgende Problematik: Ich möchte in einem Excel die oberste (1) Zeile und die ersten 8 (A-H) Spalten fixieren. Dazu wähle ich diese am Rand an (so das die ganze...
  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