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

Forumthread: Zugriff auf Outlook-Mailbox-Unterordner n. mögl.

Zugriff auf Outlook-Mailbox-Unterordner n. mögl.
01.03.2019 09:58:31
Ronald
Hallo an alle
Ich habe das Office 365 und Outlook mit Exchangekonto und möchte gerne vom Excel per VBA auf das Outlook zugreifen, und zwar speziell auf
das Postfach und möchte Unterordner oder Unterordner von Unterordnern vom Posteingang
anzeigen und ggf. auch Ordner dort erstellen lassen und auch von Excel aus
standardisierte bzw. automatisierte E-Mails senden lassen.
Was ich bisher habe:

Private Sub cmdOutlook_Click()
Dim applOutlook As Outlook.Application
Dim nsOutlook As Outlook.Namespace
Dim fldr As Folder
Dim fOutlook As Outlook.Folder
Dim sf1Outlook As Outlook.Folder
Dim sf2Outlook As Outlook.Folder
Dim sf1Outlook1 As Outlook.Folders
Dim oAccount As Account
Set applOutlook = New Outlook.Application
Set nsOutlook = applOutlook.GetNamespace("MAPI")
For Each oAccount In Session.Accounts
For Each fldr In nsOutlook.Folders
If fldr.Name = "PostFachName" Then
MsgBox "Yes"
Set sf1Outlook = fldr.Folders("Posteingang")
MsgBox sf1Outlook
'dies hier funktioniert leider nicht:
Set sf2Outlook = fldr.Folders("Posteingang").sf1Outlook.Folders("SVF")
'dies hier funktioniert leider auch nicht:
Set sf2Outlook = fldr.Folders("Posteingang").Folders("SVF")
MsgBox sf2Outlook
sf2Outlook.Display 'Sollte dann den entsprechenden Ordner öffnen und anzeigen
End If
Next
Next
End Sub

Dies ist ein Postfach, welches bei mir nicht lokal konfiguriert ist, sondern
auf meinen, wie auch auf vier weitere PCs synchronisiert wird. Auf folgende Struktur kann ich mit diesem Code zugreifen:
(PostFachName) = Zugriff möglich
---(Posteingang) = Zugriff möglich
------(SVF) = geht leider bereits nicht mehr siehe nachfolgende Meldung:
---------(weitere Ordner, die ich erstellen können und darauf zugreifen will)
Folgende Meldung erscheint:
Laufzeitfehler '438'
Objekt unterstützt diese Eigenschaft oder Methode nicht und wenn ich dann auf
debuggen klicke, markiert es mir diese Zeile hier:
Set sf2Outlook = fldr.Folders("Posteingang").sf1Outlook.Folders("SVF")
Wäre schön, wenn mir jemand Tips geben könnte, was ich falsch mache, bzw. was ich
besser machen könnte.
Ebenso, was das Erstellen von Ordnern und das Senden von E-Mails betrifft.
Wobei bei letzterem ich eigentlich nur noch wissen müßte, wie man einen eigenen
Betreff setzt.
Das Senden als solches funktioniert bei mir so:

Private Sub MailSenden()
Dim strEmpfaenger As String
strEmpfaenger = frmService.txtEmail36.Text
Call ShellExecute(0&, "Open", "mailto:" + strEmpfaenger, "", "", 1)
End Sub

Hierbei muß ich sagen, daß dies lediglich Outlook als neue E-mail öffnet.
Wenn ich das ganze ohne Outlook senden könnte, wäre das besser. Dann hätte
ich einen Standardtext, einen wechselnden Empfänger und einen wechselnden
Betreff, was ich beides per Quelltext dynamisch zuzuweisen gedenke.
Wäre toll, wenn mir auch hierbei jemand Tips geben könnte.
Vielen Dank im Voraus.
Gruß Ronald
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf Outlook-Mailbox-Unterordner n. mögl.
01.03.2019 10:30:14
mumpel
"fldr.folders("Posteingang").sf1Outlook.folders" kann nicht funktionieren, da Du "Posteingang" schon definiert hast, Du wirst ja wohl keinen "Posteingang" haben der als Unterordner nochmal "Posteingang" hat? Wie man Ornder rekursiv durchlaufen kann kannst Du in meinem Workshop unter Outlook-Workshop - Ordner löschen (Teil1 1+2) nachlesen (da geht es zwar ums Löschen, kannst Du aber auch zur Ordnersuche umschreiben). Google sagt noch mehr dazu. Wie man eine Email aus Excel oder Word erstellt kannst Du auch in meinem Workshop nachlesen, oder in Google finden.
Anzeige
Nachtrag
01.03.2019 10:34:53
mumpel
Bei mir funktioniert "Set sf2Outlook = fldr.Folders("Posteingang").Folders("SVF")".
AW: Nachtrag
01.03.2019 11:01:56
Ronald
Vielen Dank.
Es funktioniert. Ich staune. Ich habe soviel hin und her probiert und wieder im Internet gesucht,
wieder leicht andere Quelltexte gefunden und wieder probiert.
Aber dies hier funktioniert. Ich werde dann auch mal das Erstellen von Ordnern ausprobieren und
in Deinem Workshop ein bißchen schmökern.
Also nochmals vielen, vielen Dank !!
Falls es Probleme mit dem Ordnererstellen gibt, komme ich gerne wieder.
Anzeige
AW: Nachtrag
01.03.2019 11:13:33
mumpel
geschlossen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf Outlook-Mailbox-Unterordner mit VBA


Schritt-für-Schritt-Anleitung

Um mit VBA auf Outlook zuzugreifen und speziell Unterordner im Posteingang zu öffnen oder zu erstellen, kannst du folgenden Code verwenden. Dieser Code hilft dir dabei, auf das Outlook-Postfach zuzugreifen und Unterordner zu durchsuchen:

Private Sub cmdOutlook_Click()
    Dim applOutlook As Outlook.Application
    Dim nsOutlook As Outlook.Namespace
    Dim fldr As Folder
    Dim sf1Outlook As Outlook.Folder
    Dim sf2Outlook As Outlook.Folder
    Dim oAccount As Account

    Set applOutlook = New Outlook.Application
    Set nsOutlook = applOutlook.GetNamespace("MAPI")

    For Each oAccount In Session.Accounts
        For Each fldr In nsOutlook.Folders
            If fldr.Name = "PostFachName" Then
                MsgBox "Zugriff erfolgreich"
                Set sf1Outlook = fldr.Folders("Posteingang")
                MsgBox sf1Outlook

                ' Zugriff auf Unterordner
                Set sf2Outlook = sf1Outlook.Folders("SVF")
                MsgBox sf2Outlook
                sf2Outlook.Display ' Öffnet den entsprechenden Ordner
            End If
        Next
    Next
End Sub

Dieser Code zeigt dir, wie du den Posteingang öffnest und auf den Unterordner "SVF" zugreifst. Achte darauf, dass der Ordnername exakt übereinstimmt.


Häufige Fehler und Lösungen

  • Laufzeitfehler '438': Dieser Fehler tritt auf, wenn du versuchst, auf eine Eigenschaft oder Methode zuzugreifen, die nicht existiert. Stelle sicher, dass du nicht versuchst, einen Unterordner unter einem Ordner zu definieren, der bereits existiert.

  • Zugriff auf nicht existente Ordner: Wenn du versuchst, auf einen Unterordner zuzugreifen, der nicht vorhanden ist, wird der Code fehlschlagen. Stelle sicher, dass der Ordner "SVF" im Posteingang tatsächlich existiert.

  • Ordner nicht lokal konfiguriert: Wenn dein Postfach nicht lokal konfiguriert ist, stelle sicher, dass du die richtigen Berechtigungen hast, um auf die Ordner zuzugreifen.


Alternative Methoden

Falls du auf Outlook zugreifen möchtest, ohne VBA zu verwenden, kannst du auch die Outlook-Oberfläche nutzen. Um Unterordner zu erstellen, gehe folgendermaßen vor:

  1. Rechtsklick auf den Posteingang.
  2. Wähle "Neuer Ordner".
  3. Gib den Namen des neuen Ordners ein und klicke auf "OK".

Um alle Mails in Unterordnern anzuzeigen, kannst du die Suchfunktion in Outlook verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise zu demonstrieren:

  1. Unterordner erstellen:

Um einen Unterordner im Posteingang zu erstellen, kannst du folgenden VBA-Code verwenden:

Private Sub UnterordnerErstellen()
    Dim applOutlook As Outlook.Application
    Dim nsOutlook As Outlook.Namespace
    Dim fldr As Folder
    Dim newFolder As Folder

    Set applOutlook = New Outlook.Application
    Set nsOutlook = applOutlook.GetNamespace("MAPI")

    Set fldr = nsOutlook.Folders("PostFachName").Folders("Posteingang")
    Set newFolder = fldr.Folders.Add("NeuerUnterordner")
    MsgBox "Unterordner erstellt: " & newFolder.Name
End Sub
  1. E-Mails senden:

Um E-Mails direkt aus Excel zu senden, verwende den folgenden VBA-Code:

Private Sub MailSenden()
    Dim objOutlook As Object
    Dim objMail As Object

    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0) ' 0 = olMailItem

    With objMail
        .To = "empfaenger@example.com"
        .Subject = "Betreff hier"
        .Body = "Hier ist der Text der E-Mail."
        .Send
    End With
End Sub

Tipps für Profis

  • Verwende On Error Resume Next, um Fehler zu ignorieren, wenn du nicht sicher bist, ob ein Ordner existiert.
  • Führe eine Schleife durch alle Unterordner, um alle Inhalte zu durchsuchen. Damit kannst du outlook unterordner suchen effizient gestalten.
  • Um einen lokalen Ordner zu erstellen, verwende die Methode Add für die Folders-Sammlung.

FAQ: Häufige Fragen

1. Wie kann ich auf alle Unterordner in Outlook zugreifen?
Du kannst eine rekursive Funktion verwenden, um durch alle Ordner und Unterordner zu iterieren. Google bietet viele Ressourcen zu diesem Thema.

2. Kann ich E-Mails ohne Outlook senden?
Es ist möglich, E-Mails über SMTP zu senden, ohne Outlook zu verwenden. Dies erfordert jedoch eine separate Bibliothek oder API in VBA.

3. Wie kann ich die Ordnerstruktur in Outlook anzeigen?
Du kannst die Folders-Eigenschaft von Outlook verwenden, um die Ordnerstruktur abzurufen und anzuzeigen.

4. Was mache ich, wenn mein Postfach nicht in Outlook angezeigt wird?
Stelle sicher, dass dein Outlook-Profil korrekt konfiguriert ist und dass du über die richtigen Berechtigungen verfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige