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. Excel Termin in Outlook Kalender

    in Microsoft Excel Hilfe
    Excel Termin in Outlook Kalender: Hallo zusammen, ich habe mal wieder ein Problem das ich schlicht und ergreifend nicht gelöst bekomme. Leider bin ich in VBA ein absoluter Neuling. Beverly hier aus dem Forum hat mir mit einem...
  3. Wie kann man in einer Excel-Datei nur ein Arbeitsblatt freigeben

    in Microsoft Excel Hilfe
    Wie kann man in einer Excel-Datei nur ein Arbeitsblatt freigeben: Hallo Zusammen, Wie kann man in einer Excel-Datei nur ein Arbeitsblatt freigeben, so dass die dritte Person die folgenden Bedingungen erfüllt: Die dritte Person kann nur die freigegebenen...
  4. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  5. Zellbezugfehler

    in Microsoft Excel Hilfe
    Zellbezugfehler: Hallo, da ich bereits seit einiger Zeit herumkopfe und keine wirkiche Lösung bisher gefunden habe, versuche ich hier mal mein Glück. Ausgangsituation: Ich habe für meine Schüler:innen ein...
  6. Excel VBA Spalten mit Ordnerinhalt vergleichen

    in Microsoft Excel Hilfe
    Excel VBA Spalten mit Ordnerinhalt vergleichen: Hallo, Bin ehr Excel VBA Neuling, Würde aber gerne in einer bestehender Tabelle die Auflistung der Ordner mit dem eigentlichen Stand in den besagten Ordner kontrollieren. Also in der Spalte Q10...
  7. Registername übernehmen für Excel im O365

    in Microsoft Excel Hilfe
    Registername übernehmen für Excel im O365: Hallo zusammen In älteren Excelversion kann die Funktion '=TEIL(ZELLE("dateiname";A1);FINDEN("]";ZELLE("dateiname";A1))+1;32) den Dateinamen und damit dann auch den Registernamen ausgeben. Gemäss...
  8. Excel - Zeilen vergleichen

    in Microsoft Excel Hilfe
    Excel - Zeilen vergleichen: Hallo zusammen, eigentlich haben Excel und ich eine ganz gute Freundschaft. Diese wird aber gerade auf die Probe gestellt. Natürlich stelle ich mich zu doof an bzw. stehe auf dem Schlauch und...
  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