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. Kamera in Excel einbinden und per vba Fotos erstellen

    in Microsoft Excel Hilfe
    Kamera in Excel einbinden und per vba Fotos erstellen: Kamera in Excel einbinden Hallo, ich suche einen Code für eine UserForm, mit der ich die integrierte Kamera des WinPC in der UserForm anzeigen lassen kann und davon ein Bild sichern kann.
  3. Excel Sheet in Access einbinden mit acOLECreateLink

    in Microsoft Access Hilfe
    Excel Sheet in Access einbinden mit acOLECreateLink: Hallo Leute :-) ich versuche gerade seit Tagen folgendes Problem zu lösen: in einem Bericht soll ich Daten aus Access, danach Fotos und zum Schluß quasi Screenschots aus Excel darstellen. Das...
  4. Einbetten Excel auf Webseite

    in Microsoft Excel Hilfe
    Einbetten Excel auf Webseite: Moin, folgendes Problem. Möchte auf meiner Webseite Excel Tabellen einbetten als Art Ergebnissliste. (Ergebnissliste soll an einem Punkt geführt werden und somit automatisch aktualisiert werden...
  5. Bericht Export in Excel mit diversen Auswertungen

    in Microsoft Access Hilfe
    Bericht Export in Excel mit diversen Auswertungen: Guten Tag Ich bin wiedermal am Anschlag. Leider kann ich keine Daten zur verfügung stellen, da sie sensible Inhalte binhalten. Ich habe einen Bericht mit einer Schaltfläche für den Excel Export....
  6. Schätzspiel auswerten

    in Microsoft Excel Hilfe
    Schätzspiel auswerten: Hallo, wir haben ein Schätzspiel am Laufen. Es geht darum, dass eine bestimmte Anzahl an Kapseln in einem Glas sind. Die Leute konnten bis max. 11 Tipps abgeben, wieviel Kapseln sich darin...
  7. Name der Datei durch Excel geändert

    in Microsoft Excel Hilfe
    Name der Datei durch Excel geändert: Hallo und guten Abend, Die Datei wird mittels Button (VBA) zwischen gesichert. Das Makro sichert zuvor die Datei und erstellt zus. eine Sicherungsdatei mit der Erweiterung Beispiel-"Sich"....
  8. Hochzählen Zelle Excel oder Office365?

    in Microsoft Excel Hilfe
    Hochzählen Zelle Excel oder Office365?: Hallo zusammen Ich möchte im Excel eine Spalte mit den Schaltknopf hochzählen. Lokal funktioniert es einwandfrei, wie könnte ich es lösen da verschiedene Personen die gleiche Datei öffnen müssen,...
  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