Outlook Folder und Mails per VBA in Excel übertragen

Moderator: ModerationP

Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon Castor_Fiber » 27. Mai 2019, 11:56

Hallo Leute,

keine Panik, ich weiß, was google ist und die Forumssuche kenne ich auch... ABER: Ich brauche eine Lösung von hinten durch die Brust ins Auge... :-D

Ich möchte mir die Ordner + Unterordner - Struktur (Aus einem Gruppenpostkorb) mit den enthaltenen Mails (Ordner, Betreff und Datum reichen da völlig) aus Outlook nach Excel exportieren.
Alle Lösungen, die ich bisher gefunden habe, funktionieren nicht, weil - vermutlich aus Security-Gründen - nicht auf die "Outlook-Libraries" verwiesen werden kann (der Menüpunkt ist ausgegraut).

Code: Alles auswählen
Dim myNamespace As Outlook.Namespace
bringt immer einen Fehler, weil der Typ unbekannt ist.

Dieses Makro funktioniert schon ganz gut, aber es liest halt nur den "CurrentFolder" aus, den ich also manuell gerade ausgewählt habe.
Wenn ich den "CurrentFolder" irgendwie in eine Variable bekäme, wäre mir vermutlich geholfen.

Die Foldernamen wären bekannt (die konnte ich schon in einer Tabelle eintragen), falls das hilft.

Code: Alles auswählen
Sub ReadMails()

Dim olApp As Object
Dim olFolder As Object
Dim olMail As Object
Dim i As Integer

On Error Resume Next
i = 0
Set olApp = CreateObject("Outlook.Application")
Set olFolder = olApp.ActiveExplorer.currentFolder

Sheets.Add
ActiveSheet.Name = olFolder

For Each olMail In olFolder.Items
    ActiveSheet.Range("A1").Offset(i, 0).Value = olMail.Subject
    ActiveSheet.Range("A1").Offset(i, 1).Value = olMail.ReceivedTime
    ActiveSheet.Range("A1").Offset(i, 2).Value = olFolder
    i = i + 1
    Application.StatusBar = "Anzahl-Mails: " & i

Next

Application.StatusBar = False
MsgBox ("Auslesen beendet")
End Sub


Mein Plan Dim myNamespace as Outlook.Namespace durch ein Objekt zu ersetzen und dieses dann zu benutzen funktioniert nicht (hätte ja sein können :-) )

Code: Alles auswählen
'Dim myolApp As Outlook.Application
    Dim myolApp As Object
    Set myolApp = CreateObject("Outlook.Application")
   
    'Dim myNamespace As Outlook.Namespace
    Dim myNamespace As Object
    Set myNamespace = CreateObject("Outlook.Namespace")


Gibt's da vielleicht irgendwelche ur-alt-Scripts, die unter outlook 2016 ohne die Libraries laufen könnten?
Castor_Fiber
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 81
Registriert: 20. Feb 2008, 21:28

Re: Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon mmarkus » 27. Mai 2019, 17:56

Castor_Fiber hat geschrieben:
Code: Alles auswählen
'Dim myolApp As Outlook.Application
    Dim myolApp As Object
    Set myolApp = CreateObject("Outlook.Application")
   
    'Dim myNamespace As Outlook.Namespace
    Dim myNamespace As Object
    Set myNamespace = myolApp.GetNamespace("MAPI")


Gibt's da vielleicht irgendwelche ur-alt-Scripts, die unter outlook 2016 ohne die Libraries laufen könnten?



Eigentlich müsste man nur in die Hilfe schauen, da gibts eh Erklärungen und Beispiele.
Aber ich weiß, mit oberflächlichem Verständnis für die Grundlagen tut man sich da schwer.
Google mal das Thema LateBinding, dann sollte dir was "As Outlook.Namespace" betrifft ein Licht aufgehen.
Mit Create kann man nur eigenständige Anwendungen bzw. COM Klassen erstellen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1575
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon halweg » 28. Mai 2019, 05:28

Wozu muss Outlook.Application als Objekt deklariert werden?
Wenn du durch alle Ordner willst, nimm einfach so was wie
Code: Alles auswählen
For Each hauptordner in Session.Folders
   For Each unterordner in hauptordner.Folders
      For Each email in unterordner.Items
         ...

Da kannst du alle Mails durchschleifen (bzw. die in den von dir benötigten Ordnern) und damit machen, was du willst.
Office 2002, 2010; Windows 7, 10
Benutzeravatar
halweg
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 549
Registriert: 21. Okt 2010, 08:04
Wohnort: Dresden

Re: Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon mmarkus » 28. Mai 2019, 09:16

halweg hat geschrieben:Wozu muss Outlook.Application als Objekt deklariert werden?


Wenn du dich bei so einem Thema als Oberlehrer engagieren willst solltest du dich an Microsoft wenden.
In der Outlook Hilfe verwenden die das ständig obwohl es Unsinn ist.
Ansonsten ist das ein Kampf gegen Windmühlen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1575
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon halweg » 28. Mai 2019, 10:34

Mmh Markus, ich präsentiere hier eine bei mir funktionierende Lösung des Problems.
Mir wird erst jetzt bewusst, dass ich mit meiner Vereinfachung deinen Unterrichtungsansatz kaputt mache, sorry. :oops:
Office 2002, 2010; Windows 7, 10
Benutzeravatar
halweg
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 549
Registriert: 21. Okt 2010, 08:04
Wohnort: Dresden

Re: Outlook Folder und Mails per VBA in Excel übertragen

Beitragvon mmarkus » 31. Mai 2019, 09:51

halweg hat geschrieben:Mmh Markus, ich präsentiere hier eine bei mir funktionierende Lösung des Problems.


Wie du sehen kannst, geht es in meinem Kommentar um deinen Vorwurf, warum er ein Outlook Objekt initialisiert.
Offensichtlich läuft der Code ja nicht in Outlook, sondern in einer anderen Umgebung - ansonsten würden die Standard Outlook Klassen ja erkannt werden.
Daher braucht er ja eine Referenz auf Outlook und bei LateBinding ist das ein gangbarer Weg.

Mein Hinweis bezieht sich aber darauf, dass selbst in der Microsoft Hilfe in der Regel zuerst ein Application Objekt erzeugt wird, auch wenn der Code in Outlook läuft.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1575
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast