Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Outlook bestimmte E-Mails auslesen

Outlook bestimmte E-Mails auslesen
24.07.2018 15:32:23
Mathias
Hallo,
ich suche jetzt schon seit längerem einen VBA Code, um bestimmte E-Mails (an einem bestimmten Tag und mit einem bestimmten Betreff) auslesen zu können. Mein VBA Code bisher schafft es lediglch alle E-Mails aus Posteingang/-Ausgang zu extrahieren. Gibt es da eine Möglichkeit über eine UserForm ein bestimmtes Datum auszuwählen und dann eventuell den zugehörigen Betreff?! Wäre echt super, wenn ihr mir helfen könnntet. Leider sind meine VBA Kenntnisse nicht so ausgeprägt.
Das wäre echt super, ich brauche dies beruflich, da wir bestimmte Postein-und Ausgänge dokumentieren müssen.
Meinen bisherigen VBA-Code habe ich aus dem Internet und auf mein Outlook angepasst:
Public Sub ReadMailItems()
Dim olapp        As Object
Dim olName       As Object
Dim olHFolder    As Object
Dim olUFolder    As Object
Dim Mail As MailItem
Dim Sender As String
Dim strAttCount  As String
Dim olItemsCount As Long
Dim lngAttCount  As Long
Dim letzteZeile  As Long
On Error Resume Next
Set olapp = CreateObject("Outlook.Application")
Set olName = olapp.GetNamespace("MAPI")
Set olHFolder = olName.Session.Folders("Kontoname") ' Kontoname
Set olUFolder = olHFolder.Folders("Posteingang") 'Ordnername
letzteZeile = Sheets("Master").Range("A" & Rows.Count).End(xlUp).Row
For olItemsCount = 1 To olUFolder.Items.Count
With olUFolder.Items.Item(olItemsCount)
For lngAttCount = 1 To .Attachments.Count
If strAttCount = "" Then
strAttCount = .Attachments.Item(lngAttCount).Filename
Else
strAttCount = strAttCount & vbCrLf & .Attachments.Item(lngAttCount).  _
_
Filename
End If
Next lngAttCount
Sheets("Master").Range("A" & olItemsCount + letzteZeile).Value = olHFolder. _
Name & "->" & olUFolder.Name
Sheets("Master").Range("B" & olItemsCount + letzteZeile).Value = Mail. _
SenderEmailAddress
Sheets("Master").Range("C" & olItemsCount + letzteZeile).Value = . _
SenderEmailAddress
Sheets("Master").Range("D" & olItemsCount + letzteZeile).Value = .ReceivedTime
Sheets("Master").Range("E" & olItemsCount + letzteZeile).Value = .Subject
Sheets("Master").Range("F" & olItemsCount + letzteZeile).Value = strAttCount
strAttCount = ""
End With
Next olItemsCount
On Error GoTo 0
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook bestimmte E-Mails auslesen
29.07.2018 05:56:13
fcs
Hallo Mathias,
ich hab mich mit deiner Frage/Problem mal beschäfftigt und in einer Testdatei dein Makro umgestrickt, so dass die Daten aller E-Mails in dem Ordner/den Ordnern in ein Daten-Array geschrieben werden statt in das Tabellenblatt "Master".
Danach wird ein Userform geöffnet in dem du Start-Datum + Startzeit eingeben kannst, sowie den Suchtext für den Betreff. Den Suchtext kannst du über eine Combobox mit den vorhandenen Betrefft-Texten auswählen oder direkt in die Textbox eingeben bzw. nach Combobox-Auswahl editieren.
Alle Mails, deren Send-/Empfangs-Datum &gt= dem Startdatum/-Zeit sind und im Betreff den Suchtext enthalten werden ins Tabellenblatt "Master" geschrieben.
Mir war jetzt nicht klar, welche Mail-Information du in die Spalte B schreiben willst - Ich hab mich für den/die Empfänger der Mail (To-Feld der E-Mail-Daten) entschieden.
Das Makro "ReadMailItems" ist bereits vorbereited für das Durchsuchen mehrerer Outlook-Ordner in einer For-Next-Schleife. Siehe Kommentare im Code zur Anpassung.
https://www.herber.de/bbs/user/122975.xlsm
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

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 in Outlook auslesen und in Excel speichern


Schritt-für-Schritt-Anleitung

Um bestimmte E-Mails in Outlook auszulesen und diese in Excel zu speichern, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, nach E-Mails zu suchen, die an einem bestimmten Datum empfangen wurden und einen bestimmten Betreff haben.

  1. Öffne Outlook und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinOutlookName)" > Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Public Sub ReadMailItems()
       Dim olapp As Object
       Dim olName As Object
       Dim olHFolder As Object
       Dim olUFolder As Object
       Dim Mail As MailItem
       Dim strAttCount As String
       Dim letzteZeile As Long
       Dim Datum As Date
       Dim Betreff As String
    
       ' Hier Datum und Betreff anpassen
       Datum = InputBox("Bitte Datum eingeben (TT.MM.JJJJ):")
       Betreff = InputBox("Bitte Betreff eingeben:")
    
       On Error Resume Next
       Set olapp = CreateObject("Outlook.Application")
       Set olName = olapp.GetNamespace("MAPI")
       Set olHFolder = olName.Session.Folders("Kontoname") ' Kontoname
       Set olUFolder = olHFolder.Folders("Posteingang") 'Ordnername
       letzteZeile = Sheets("Master").Range("A" & Rows.Count).End(xlUp).Row
    
       For olItemsCount = 1 To olUFolder.Items.Count
           With olUFolder.Items.Item(olItemsCount)
               If .ReceivedTime >= Datum And InStr(.Subject, Betreff) > 0 Then
                   Sheets("Master").Range("A" & olItemsCount + letzteZeile).Value = .ReceivedTime
                   Sheets("Master").Range("B" & olItemsCount + letzteZeile).Value = .SenderEmailAddress
                   Sheets("Master").Range("C" & olItemsCount + letzteZeile).Value = .Subject
               End If
           End With
       Next olItemsCount
       On Error GoTo 0
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die gewünschten E-Mails auszulesen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"
    Überprüfe, ob der angegebene Ordnername und Kontoname korrekt sind.

  • Fehler: E-Mails werden nicht angezeigt
    Stelle sicher, dass das Datum im richtigen Format eingegeben wurde und dass der Betreff korrekt ist.

  • Excel zeigt unerwartete Ergebnisse
    Vergewissere dich, dass das Tabellenblatt "Master" existiert und die richtigen Spalten vorhanden sind.


Alternative Methoden

Wenn du keinen VBA-Code verwenden möchtest, kannst du auch die Outlook-Suche nutzen. Gib einfach das Datum und den Betreff in die Suchleiste ein. Dies funktioniert gut für eine einmalige Suche, ist jedoch nicht automatisiert.


Praktische Beispiele

  • Beispiel 1: Suche alle E-Mails, die am 15.10.2023 mit dem Betreff "Meeting" empfangen wurden.

    • Gib im ersten InputBox 15.10.2023 ein und im zweiten Meeting.
  • Beispiel 2: Suche nach E-Mails mit dem Betreff "Rechnung" vom 22.09.2023.

    • Gib im ersten InputBox 22.09.2023 ein und im zweiten Rechnung.

Tipps für Profis

  • Nutze die Outlook-Objektbibliothek, um deinen VBA-Code weiter anzupassen und mehr Informationen aus den E-Mails auszulesen, wie z.B. Anhänge oder CC- und BCC-Adressen.
  • Experimentiere mit der outlook to excel automation, um den Prozess zu optimieren und die Daten direkt in Excel zu analysieren.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Ordner zu durchsuchen?
Du kannst eine For-Next-Schleife hinzufügen, um durch verschiedene Ordner zu iterieren.

2. Funktioniert dieser Code in allen Outlook-Versionen?
Der Code sollte in den meisten modernen Outlook-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass deine Sicherheitseinstellungen das Ausführen von Makros zulassen.

3. Kann ich den Code anpassen, um nur E-Mails mit Anhängen auszulesen?
Ja, füge eine Bedingung hinzu, um zu überprüfen, ob .Attachments.Count > 0, bevor du die E-Mail speicherst.

4. Wie speichere ich den Code für eine spätere Verwendung?
Speichere die Datei als "Excel-Makro-fähige Arbeitsmappe" (*.xlsm), um den VBA-Code zu behalten.

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