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

Forumthread: Outlook Betreff-Suche aus Excel heraus (VBA)

Outlook Betreff-Suche aus Excel heraus (VBA)
13.03.2019 08:31:46
MCO
Guten Morgen!
Ich versuche per VBA in Outlook Mails zu suchen, die im Betreff den Zellinhalt wiedergeben.
Gefunden hab ich dieses Makro
http://www.vboffice.net/de/developers/emails-zum-gleichen-thema-suchen
Das läuft auch sehr schön in Outlook, allerdings schaffe ich es nicht, es für Excel umzuschreiben, bzw die Objekte zu deklarieren.
Ganz zufrieden bin ich mit dem Ding auch nicht, weil es über SQL filtert und ich die Ordner nicht bestimmen kann.
Dieses Makro
https://docs.microsoft.com/de-e/office/vba/api/outlook.application.advancedsearch
arbeitet mit der Suchfunktion, wird aber nicht mit Ergebnis ausgeführt (bei mir: Endlos-Schleife). Auch hier hab ich es nur in Outlook probiert.
Kann mir da jemand helfen?
vielen Dank!
Gruß, MCO
Anzeige

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

Betreff
Datum
Anwender
Anzeige
... und gründlich lesen nicht deine...
18.03.2019 06:59:39
MCO
Guten Morgen, Oberschlumpf.
Ich will nicht die Betreffezeilen in Excel sehen sondern in Outlook!
Das Suchfeld in Outlook soll per VBA mit dem Zellinhalt aus Excel gefüllt werden. So beschreiben es die von mir angeführten Makros, aber leider nur im Outlook-VBA.
Bitte schau dir die LINKS dann wird es sicher klarer.
Danke fürs lesen!
https://docs.microsoft.com/de-e/office/vba/api/outlook.application.advancedsearch
Gruß, MCO
Anzeige
;

Forumthreads zu verwandten Themen

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

Outlook Betreff-Suche aus Excel heraus mit VBA


Schritt-für-Schritt-Anleitung

Um die Betreffzeilen von E-Mails in Outlook mithilfe von Excel und VBA zu durchsuchen, kannst Du das folgende VBA-Makro verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Wähle im Menü „Einfügen“ die Option „Modul“, um ein neues Modul zu erstellen.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub SucheBetreffInOutlook()
       Dim olApp As Object
       Dim olNamespace As Object
       Dim olFolder As Object
       Dim olMail As Object
       Dim SearchTerm As String
       Dim Ergebnis As String
    
       ' Outlook-Anwendung starten
       Set olApp = CreateObject("Outlook.Application")
       Set olNamespace = olApp.GetNamespace("MAPI")
       Set olFolder = olNamespace.GetDefaultFolder(6) ' 6 entspricht dem Posteingang
    
       ' Zellinhalt als Suchbegriff festlegen
       SearchTerm = ThisWorkbook.Sheets("Sheet1").Range("A1").Value
    
       ' Durchsuche die E-Mails im Posteingang
       For Each olMail In olFolder.Items
           If InStr(1, olMail.Subject, SearchTerm, vbTextCompare) > 0 Then
               Ergebnis = Ergebnis & olMail.Subject & vbCrLf
           End If
       Next olMail
    
       ' Ausgabe der Ergebnisse
       If Ergebnis <> "" Then
           MsgBox "Gefundene Betreffe:" & vbCrLf & Ergebnis
       Else
           MsgBox "Keine Betreffe gefunden für: " & SearchTerm
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Gib im Zellbereich A1 den Suchbegriff ein, den Du verwenden möchtest.

  6. Führe das Makro aus, um die E-Mails zu durchsuchen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Lösung: Stelle sicher, dass Du die richtige Outlook-Anwendung installiert und geöffnet hast.

  • Fehler: "Endlos-Schleife"
    Lösung: Überprüfe die Bedingungen in Deiner Schleife. Achte darauf, dass Du die richtige Iteration über die E-Mail-Objekte verwendest.

  • Fehler: Keine Ergebnisse gefunden
    Lösung: Vergewissere Dich, dass der Suchbegriff in einer der Betreffzeilen vorhanden ist. Teste auch mit einem anderen Begriff.


Alternative Methoden

Eine andere Methode zur Suche nach Betreffzeilen in Outlook ist die Verwendung der AdvancedSearch-Funktion. Diese Methode kann komplexer sein, bietet aber erweiterte Filtermöglichkeiten.

Hier ein Beispiel:

Sub AdvancedSearchExample()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim Search As Object
    Dim SearchTerm As String

    Set olApp = CreateObject("Outlook.Application")
    Set olNamespace = olApp.GetNamespace("MAPI")
    SearchTerm = ThisWorkbook.Sheets("Sheet1").Range("A1").Value

    Set Search = olApp.AdvancedSearch("Inbox", "urn:schemas:httpmail:subject LIKE '%" & SearchTerm & "%'", True)
End Sub

Diese Methode ermöglicht es, die Suche auf spezifische Ordner und Bedingungen anzupassen.


Praktische Beispiele

Wenn Du mehrere Begriffe in der Betreffzeile suchen möchtest, solltest Du den Code anpassen, um eine Liste von Suchbegriffen zu verarbeiten. Hier ein Beispiel:

Sub SucheMehrereBetreffs()
    Dim olApp As Object
    Dim olNamespace As Object
    Dim olFolder As Object
    Dim olMail As Object
    Dim Suchbegriffe As Variant
    Dim Ergebnis As String
    Dim Begriff As Variant

    ' Outlook-Anwendung starten
    Set olApp = CreateObject("Outlook.Application")
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(6) ' Posteingang

    ' Mehrere Suchbegriffe festlegen
    Suchbegriffe = Split(ThisWorkbook.Sheets("Sheet1").Range("A1").Value, ",")

    ' Durchsuche die E-Mails
    For Each olMail In olFolder.Items
        For Each Begriff In Suchbegriffe
            If InStr(1, olMail.Subject, Trim(Begriff), vbTextCompare) > 0 Then
                Ergebnis = Ergebnis & olMail.Subject & vbCrLf
            End If
        Next Begriff
    Next olMail

    ' Ausgabe der Ergebnisse
    If Ergebnis <> "" Then
        MsgBox "Gefundene Betreffe:" & vbCrLf & Ergebnis
    Else
        MsgBox "Keine Betreffe gefunden."
    End If
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Verwende Debug.Print, um den Fortschritt und die Werte während der Ausführung des Codes zu überwachen.
  • Optimiere die Suche, indem Du nur die benötigten Ordner durchsuchst, um die Ausführungszeit zu verkürzen.

FAQ: Häufige Fragen

1. Wie kann ich die Suche auf andere Ordner ausweiten?
Du kannst den Ordner ändern, indem Du die Zeile Set olFolder = olNamespace.GetDefaultFolder(6) anpasst. Nutze die entsprechenden Konstanten für andere Ordner.

2. Kann ich die Suche auch mit mehreren Excel-Zellen durchführen?
Ja, Du kannst die Range-Eigenschaft anpassen, um mehrere Zellen zu durchsuchen. Nutze eine Schleife, um die Werte aus den Zellen zu lesen und in die Suche einzufügen.

3. Ist dies in allen Excel-Versionen möglich?
Ja, das VBA-Skript sollte in den meisten modernen Excel-Versionen funktionieren, solange Du Zugriff auf Outlook hast.

4. Wie kann ich die Ergebnisse in einer Excel-Tabelle speichern?
Du kannst die Ergebnisse in einem Array speichern und dann in die Zellen eines Arbeitsblatts schreiben, anstatt sie in einer MsgBox anzuzeigen.

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