Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Per Makro E-Mail auslesen und in Excel Tabelle speichern

Per Makro E-Mail auslesen und in Excel Tabelle speichern
16.11.2019 19:57:12
Blackjack
Hallo zusammen,
ich stehe zurzeit vor folgendem Problem.
Ich möchte gerne im Outlook Mails in Excel per Makro auslesen und habe schon folgendes zusammen bekommen.
Jetzt möchte ich aber nicht nur den Posteingang "auslesen" sondern andere Unterordner.
Kann mich bei der richtigen Lösungsfindung jemand von Euch unterstützen?
Vielen Dank im voraus

Sub OutlookPosteingang()
'Variablendeklaration
Dim OLF As Outlook.MAPIFolder
Dim AnzEintraege As Integer, i As Integer, Email As Integer
' Hier wird eine Tabelle hinzugefügt
Sheets.Add
'Globale Fehlerbehandlung -> Excel soll automatisch weitermachen, egal welcher Fehler
On Error Resume Next
' Überschriften im neuen Blatt -> die erste Zeile von A1 - F1
[A1].Value = "Betreff"
[B1].Value = "Datum Uhrzeit"
[C1].Value = "empfangen von"
[D1].Value = "gelesen"
[E1].Value = "Nachricht"
[F1].Value = "Dateianhänge"
'Erste Zeile soll Fett formatiert werden
Rows(1).Font.Bold = True
'Setzen der Variable als Outlook Application; Zugriff auf Outlook
Set OLF = GetObject("", "Outlook.Application") _
.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
'Setzen der Variable -> es sollen alle Nachrichten im Ordner 'Posteingang (olFolderInbox) gezä   _
_
_
hlt werden
AnzEintraege = OLF.Items.Count
'Setzen der Variablen auf '0'
i = 0: Email = 0
'Beginn Schleifendurchlauf (Schleife 1) -> die Variable 'i' läuft solange, wie Anzahl der  _
EMails vorhanden sind
While i  Anzahl der Anhänge in der EMail
Cells(Email + 1, 6).Value = .Attachments.Count
'Ende der Schleife 2
End With
'Ende der Schleife 1
Wend
'Die Variable muss wieder auf Null gesetzt werden = nothing halt
Set OLF = Nothing
'Die Spalten sollen automatisch in der Breite angeglichen werden
Columns("A:F").AutoFit
'Die Zelle 'A2' soll selektiert werden
[A2].Select
'Die Exceldatei wird gespeichert
ActiveWorkbook.Saved = True
'Die Statuszeile wird wieder ausgeschaltet
Application.StatusBar = False
End Sub

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
16.11.2019 20:15:35
Blackjack
Hallo Thorsten,
vielen Dank für die schnelle Antwort.
Ich werde mal mein Glück versuchen.
Melde mich, ob es funktioniert.
Gruss Alex
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
16.11.2019 20:43:34
Blackjack
Hallo Thorsten,
leider komme ich bei der Lösung meines Problem mit der Seite nicht so wirklich weiter.
Leider bin ich in VBA ein blutiger Anfänger. Sorry :-/
Kannst Du mir vllt noch einen hinweis geben?
Anzeige
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
17.11.2019 11:24:02
Oberschlumpf
Moin Moin
Ok, jetzt habe ich Zeit...aber noch ne Frage.
Was genau meinst du mit:
Jetzt möchte ich aber nicht nur den Posteingang "auslesen" sondern andere Unterordner.
Bisher verstehe ich, dass im Ordner "Posteingang" noch weitere (andere) Unterordner enthalten sind. Als Bild meine ich es so:
Userbild
Oder meinst du, dass weitere (andere) Unterordener auf der gleichen Ebene wie "Posteingang" enthalten sind? Als Bild würde es so aussehen:
Userbild
Verstehst du den Unterschied?
Denn abhängig davon, wie es in deinem Outlook aussieht, muss entsprechendes programmiert werden.
Ciao erst mal
Thorsten
Anzeige
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
17.11.2019 13:14:10
Blackjack
Hallo Thorsten,
ich versuche einen Unterordner auszulesen, wie in Deinem ersten Beispiel den Unterordner "Ordner 1".
Leider komme ich bei dem Makro immer nur auf den Posteingang. Dort liest er auch alles so aus wie es soll.
Nun die Frage: wie müsste ich das Makro schreiben, um den "Ordner 1" auszulesen?
Das Ergebnis möchte/muss ich dann in Excel weiter mit Formeln auswerten. So der Plan. Ich hoffe Du verstehst, was ich meine :-)
Vielen Dank für Deine Hilfe
Anzeige
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
17.11.2019 15:13:56
Firmus
Hi Blackjack,
anbei ein Beispiel, das einen Ordner ausliest und pro Email eine XLS-Zeile erzeugt.
https://www.herber.de/bbs/user/133271.xlsm
Dabei wird erst per trivalem Dialog durch die Struktur navigiert (PST - Ordner L1 - Ordner L2)
Der Teil der sich durch die Ordnerstruktur navigiert, enthält u.a. diese beiden Zeilen.
- Set olOrdner = olNamespace.Folders(ml1)
- Set olOrdnerL2 = olOrdner.Folders(2)
Das heist in jedem FolderObject ist eine FolderObject für den nächsten Level enthalten, und ein Counter.
Damit kannst Du alle Unterverzeichnisse auf allen Ebenen auslesen.
Die Recursive Methode habe ich nicht angewandt, auch habe ich nicht die volle Struktur ausgelesen.
Aber ich denke als Ansatz für Deine Problemstellung sollte es reichen.
Lass wissen, ob es Dich weiterbrachte.
Gruß,
Firmus
Anzeige
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
17.11.2019 15:44:01
Blackjack
Hallo Firmus,
werde es nachher gleich mal probieren.
Melde mich dann mit dem Ergebnis.
Vielen herzlichen Dank.
Gruss Alex
AW: Per Makro E-Mail auslesen und in Excel Tabelle speichern
17.11.2019 19:42:10
Blackjack
Grandios!!!
FIRMUS ... VIELEN DANK
Das was ich bisher versucht habe, funktioniert super. Werde nochmals ein bisschen rumprobieren.
Ist mir eine wirkliche Hilfe!!!
Vielen Dank nochmals und ein schönes Restwochenende
Gruss aus Hamburg
Alex
Anzeige
ich weiß schon, wieso...
17.11.2019 20:25:30
Oberschlumpf
Hi
...ich sicherheitshalber noch mal nachfragte
Deine erste Frage war:
Jetzt möchte ich aber nicht nur den Posteingang "auslesen" sondern andere Unterordner.
andere = Mehrzahl!
Nachdem ich (zum Glück) nachfragte, war deine nächste Antwort:
ich versuche einen Unterordner auszulesen
einen = EINZAHL!!!
Das bedeutet, dass du schon in deinem ersten Beitrag etwas beschrieben hast (andere=mehrere Unterordner), was falsch war.
Mein Tipp an dich:
Klar, wenn du Fragen hast, immer her damit!
Aber! Bitte achte - genau - darauf, dass das, was du beschreibst, auch dem entspricht, was du erreichen möchtest.
Ciao
Thorsten
Anzeige
AW: ich weiß schon, wieso...
17.11.2019 21:26:25
Blackjack
Moin Thorsten,
Sorry, Du hast natürlich Recht. Ich habe missverständlich geschrieben.
Mein Plan war den VBA Code für einen Unterordner zu schreiben (Einzahl), welchen ich dann immer wieder nach Wunsch ändern kann. Daher hatte ich "andere" Unterordner in Mehrzah geschriebenl. Pro Makro-Lauf wollte ich aber nur auf EINEN Unterordner zugreifen.
Nochmals sorry für meine missverständliche Schreibweise.
Gruss aus Hamburg
Alex
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

E-Mails aus Outlook per Makro in Excel importieren


Schritt-für-Schritt-Anleitung

Um E-Mails aus Outlook per Makro in Excel zu importieren, kannst du den folgenden VBA-Code verwenden. Dieser Code ist speziell darauf ausgelegt, Daten aus dem Posteingang auszulesen. Wenn du auch Unterordner auslesen möchtest, musst du den Code entsprechend anpassen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Sub OutlookPosteingang()
    Dim OLF As Outlook.MAPIFolder
    Dim AnzEintraege As Integer, i As Integer, Email As Integer
    Sheets.Add
    On Error Resume Next
    [A1].Value = "Betreff"
    [B1].Value = "Datum Uhrzeit"
    [C1].Value = "empfangen von"
    [D1].Value = "gelesen"
    [E1].Value = "Nachricht"
    [F1].Value = "Dateianhänge"
    Rows(1).Font.Bold = True
    Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    AnzEintraege = OLF.Items.Count
    i = 0: Email = 0
    While i < AnzEintraege
        With OLF.Items(i + 1)
            Email = Email + 1
            Cells(Email + 1, 1).Value = .Subject
            Cells(Email + 1, 2).Value = .ReceivedTime
            Cells(Email + 1, 3).Value = .SenderName
            Cells(Email + 1, 4).Value = .Read
            Cells(Email + 1, 5).Value = .Body
            Cells(Email + 1, 6).Value = .Attachments.Count
        End With
        i = i + 1
    Wend
    Set OLF = Nothing
    Columns("A:F").AutoFit
    [A2].Select
    ActiveWorkbook.Saved = True
    Application.StatusBar = False
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um die Daten aus E-Mails auszulesen.

Häufige Fehler und Lösungen

  • Problem: Das Makro liest nur den Posteingang aus.

    • Lösung: Um auch Unterordner auszulesen, musst du die Zeile anpassen, in der der Ordner definiert wird. Zum Beispiel kannst du Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").Folders("DeinOrdnerName") verwenden.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Stelle sicher, dass die Outlook-Anwendung geöffnet ist und dass die Sicherheitsoptionen das Ausführen von Makros erlauben.

Alternative Methoden

Wenn du E-Mails in Excel importieren möchtest, ohne VBA zu verwenden, kannst du auch:

  • Power Query verwenden, um Daten aus Outlook zu importieren. Dies ist eine benutzerfreundliche Methode.
  • Nutze Tools wie Microsoft Flow oder Zapier, um automatisierte Workflows zu erstellen, die E-Mail-Daten direkt in Excel übertragen.

Praktische Beispiele

  • E-Mails aus einem bestimmten Unterordner lesen: Hier ist ein Beispiel, um E-Mails aus dem Unterordner "Ordner 1" auszulesen:

    Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").Folders("Posteingang").Folders("Ordner 1")
  • Daten in eine spezifische Excel-Tabelle einfügen: Wenn du die Daten in eine bestimmte Tabelle einfügen möchtest, ändere den Sheets.Add Befehl in Sheets("DeinTabelle").Cells.


Tipps für Profis

  • Verwende die Recursive Methode, um alle Unterordner auf verschiedenen Ebenen auszulesen. Das gibt dir die Möglichkeit, eine umfassendere Datenanalyse durchzuführen.
  • Experimentiere mit Formeln in Excel, um die importierten E-Mail-Daten weiter auszuwerten, wie z.B. das Zählen von E-Mails nach Absender oder das Filtern nach Datum.

FAQ: Häufige Fragen

1. Kann ich E-Mails automatisch übertragen? Ja, du kannst VBA-Makros so anpassen, dass sie automatisch in regelmäßigen Abständen ausgeführt werden, um daten aus mails in excel automatisch zu übertragen.

2. Wie extrahiere ich E-Mail-Adressen aus Excel? Du kannst die Funktion =FILTER() verwenden, um nur die E-Mail-Adressen anzuzeigen, die in einer bestimmten Spalte stehen.

3. Gibt es eine Möglichkeit, den Inhalt der E-Mails zu formatieren? Ja, du kannst den Body der E-Mail formatieren, bevor du ihn in Excel überträgst. Nutze dazu HTML-Formatierungen, wenn du den Body als HTML überträgst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige