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

Forumthread: Excel vba Outlook Ordner auslesen

Excel vba Outlook Ordner auslesen
15.11.2020 16:25:25
erna
Hallo,
ich arbeite mit folgendem Makro, um Mails eines bestimmten Absenders in Excel 2010auszulesen.
Wie kann ich diesen Makro abändern, wenn die Mails nicht im Posteingansordner sondern im Ordner "XXX" sind?
Sub Eing_Auslesen()
Const strAbsenderName As String = "Absendername"
' An den Absender/Provider Anpassen!!!
'Const strAbsenderName As String = "vorname.nachname@xyz.de"
' Ende "An den Absender Anpassen!!!"
Dim objOutlook As Outlook.Application
Dim objnSpace As Outlook.Namespace
Dim objFolder As Outlook.MAPIFolder
Dim objMsg As Object
Dim objItem As Outlook.MailItem
Dim intCounter As Integer, intCount As Integer, iRow As Integer
Dim ws As Worksheet
Dim sText As String
Application.ScreenUpdating = False
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
Set objFolder = objnSpace.GetDefaultFolder(olFolderInbox)
intCount = objFolder.Items.Count
If intCount > 0 Then
Set ws = ActiveSheet
iRow = 2
For intCounter = 2 To intCount
Set objMsg = objFolder.Items(intCounter)
If objMsg.Class = olMail Then
Set objItem = objMsg
If UCase(objItem.SenderName) = UCase(strAbsenderName) Then
iRow = iRow + 1
ws.Cells(iRow, 1).Value = objItem.Body
End If
End If
Next intCounter
Set ws = Nothing
End If
Set objnSpace = Nothing
Set objFolder = Nothing
Set objMsg = Nothing
Set objItem = Nothing
Set objOutlook = Nothing
' Ordnen
ActiveWorkbook.Worksheets("Arbeitsblatt1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Arbeitsblatt1").AutoFilter.Sort.SortFields.Add Key _
:=Range("M1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Arbeitsblatt1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Vielen Dank vorab für Ihre Hilfe.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel vba Outlook Ordner auslesen
15.11.2020 17:12:18
Firmus
Hallo Erna,
hier ein Makro - über die Jahre entwickelt - das die Auswahl einer beliebigen existierenden PST erlaubt.
Sogar auf einen zweiten Level innerhalb der PST kann selektiert werden.
(2 Dialoge)
https://www.herber.de/bbs/user/141577.xlsm
Viele Kommentare erläutern was getan wird.
Einfach mit debug einmal durchklicken, damit wird die Arbeitsweise komplett transparent.
Gruß,
Firmus
Anzeige
;

Forumthreads zu verwandten Themen

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

Excel VBA: Outlook Ordner Auslesen und Daten Aus E-Mails Extrahieren


Schritt-für-Schritt-Anleitung

Um E-Mails aus einem spezifischen Outlook-Ordner auszulesen, kannst Du das folgende VBA-Makro verwenden. Es ist wichtig, dass Du die richtige Ordnerstruktur und den Absendernamen in Deinem Code anpasst.

Sub Eing_Auslesen()
    Const strAbsenderName As String = "Absendername" ' An den Absender/Provider Anpassen!!!
    Dim objOutlook As Outlook.Application
    Dim objnSpace As Outlook.Namespace
    Dim objFolder As Outlook.MAPIFolder
    Dim objMsg As Object
    Dim objItem As Outlook.MailItem
    Dim intCounter As Integer, intCount As Integer, iRow As Integer
    Dim ws As Worksheet
    Application.ScreenUpdating = False
    Set objOutlook = CreateObject("Outlook.Application")
    Set objnSpace = objOutlook.GetNamespace("MAPI")

    ' Hier den gewünschten Ordnerpfad angeben
    Set objFolder = objnSpace.Folders("DeinOrdnername").Folders("XXX") ' Ersetze "XXX" mit dem Namen deines Ordners

    intCount = objFolder.Items.Count
    If intCount > 0 Then
        Set ws = ActiveSheet
        iRow = 2
        For intCounter = 1 To intCount
            Set objMsg = objFolder.Items(intCounter)
            If objMsg.Class = olMail Then
                Set objItem = objMsg
                If UCase(objItem.SenderName) = UCase(strAbsenderName) Then
                    ws.Cells(iRow, 1).Value = objItem.Body
                    iRow = iRow + 1
                End If
            End If
        Next intCounter
        Set ws = Nothing
    End If
    Set objnSpace = Nothing
    Set objFolder = Nothing
    Set objMsg = Nothing
    Set objItem = Nothing
    Set objOutlook = Nothing
End Sub

Häufige Fehler und Lösungen

  1. Fehler: „Objekt nicht gefunden“

    • Lösung: Überprüfe, ob der Ordnername korrekt eingegeben wurde. Stelle sicher, dass der angegebene Ordner tatsächlich existiert.
  2. Fehler: „Kein Zugriff auf das Outlook-Objekt“

    • Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Das Makro sollte in der gleichen Excel-Instanz ausgeführt werden, in der Outlook geöffnet ist.

Alternative Methoden

Eine alternative Methode zum Auslesen von E-Mails aus Outlook ist die Verwendung von Power Query. Hierbei kannst Du Daten direkt aus Outlook importieren, ohne VBA zu verwenden. Dies kann besonders für Benutzer hilfreich sein, die sich nicht mit Programmierung auseinandersetzen möchten.

  1. Öffne Excel und gehe zu „Daten“ > „Daten abrufen“.
  2. Wähle „Aus anderen Quellen“ > „Aus Microsoft Exchange“.
  3. Gib Deine Anmeldedaten ein und wähle den gewünschten Ordner aus.

Praktische Beispiele

Ein praktisches Beispiel für das Auslesen von Daten aus E-Mails wäre das Extrahieren von Rechnungsinformationen. Du kannst das oben beschriebene Makro anpassen, um nach spezifischen Betreffzeilen oder Inhalten zu filtern, die auf Rechnungen hinweisen.

If InStr(objItem.Subject, "Rechnung") > 0 Then
    ws.Cells(iRow, 1).Value = objItem.Body
    iRow = iRow + 1
End If

Tipps für Profis

  • Outlook VBA Excel kombinieren: Wenn Du regelmäßig Daten aus E-Mails auslesen musst, kannst Du Makros automatisieren, um die Arbeit zu erleichtern.
  • Debugging: Nutze die Debugging-Funktion in VBA, um den Code Schritt für Schritt durchzugehen und sicherzustellen, dass alles wie gewünscht funktioniert.
  • Verwende Dim objOutlook As Outlook.Application: Dies hilft dabei, die Performance Deines Codes zu verbessern und sorgt für eine bessere Lesbarkeit.

FAQ: Häufige Fragen

1. Wie kann ich einen anderen Ordner als den Posteingang auswählen?
Du kannst den Ordner mit Set objFolder = objnSpace.Folders("DeinOrdnername").Folders("XXX") auswählen. Ersetze „XXX“ mit dem gewünschten Ordnernamen.

2. Funktioniert das Makro in allen Excel-Versionen?
Das Makro wurde für Excel 2010 und neuer entwickelt. Achte darauf, dass Du die richtigen Verweise in den VBA-Optionen gesetzt hast, um die Outlook-Bibliothek zu verwenden.

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