Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Outlook Email per VBA speichern
23.12.2015 09:40:43
Jens
Hallo
ich habe in outlook nachfolgenden Code mit dem ich Emails abspeichern lassen kann entsprechender einer bestimmten Form.
Dieser funktioniert auch super.
https://www.herber.de/bbs/user/102421.txt
Aber es wäre noch besser, wenn ich über eine Userform die Emails im Posteingang bzw. Postausgang durchklicken könnte. Dabei wird der neue Betreff in einer Zeile eingezeigt. Dieser kann ggf. angepasst werden.
Desweiterem kann in einem anderen Feld der Ordner ausgewählt werden in dem die Email beim Klick auf den Button speichern abgespeichert wird.
Hat hierzu jemand eine Idee?

58
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook Email per VBA speichern
23.12.2015 13:21:43
mumpel
Hallo!
https://www.herber.de/bbs/user/102432.zip
Dieses Beispiel ist für Excel. Bei Öffnen der Datei wird im Menüband das Tab "Emails auslesen" erstellt. In diesem sind zwei Schaltflächen. Mit "Emails auslesen" wird eine Userform geöffnet, mit "Blätter löschen" wird der Auslieferungszustand widerhergestellt. Beim ersten Aufruf wird für jedes Postfach ein Tabellenblatt angelegt, in welches die Emails eingelesen werden können. In der Userform sind bis zu 3 Ordnerebenen möglich. Für jede Ordnerebene werden die Emails ind Comboboxen eingelesen. Wenn Du den Betreff (als Speichernamen) ändern möchtest musst Du bei "Betreff ändern" einen Haken setzen, anderenfalls wird die (wichtige) EntryID gelöscht weshalb das Speichern dann nicht mehr möglich ist. Die Felder für EntryId und StoreID dürfen nicht geändern werden. Outlook sollte im Hintergrund aktiv sein, damit der Zugriff schneller und stabiler läuft. Oben in der Userform kann der Pfad gewählt werden, dieser wird zur weiteren (späteren) Nutzung gespeichert.
Gruß, René

Anzeige
Fehlerkorrektur
23.12.2015 13:39:11
mumpel
Hier eine fehlerbereinigte Version der Datei.

AW: Datei fehlt :-) oT
23.12.2015 13:58:33
robert

AW: Datei fehlt :-) oT
23.12.2015 14:07:09
mumpel
Hoppla, wer macht denn sowas. ;-)
Habe noch eine Kleinigkeit eingebaut. Man kann sich die gewählte Email jetzt auch anzeigen lassen. https://www.herber.de/bbs/user/102434.zip

läuft nicht mit Office2010...
23.12.2015 15:40:31
robert
Hi,
Fehlermeldung:
Dim olApp As Outlook.Application
Nicht vorhanden, Haken raus bringt nichts.
Gruß robert

AW: läuft nicht mit Office2010...
23.12.2015 15:49:02
mumpel
Es kann sein dass der Verweis neu gesetzt werden muss (auf "Microsoft Outlook 14.0 Object Library"). Normalerweise sollte der Verweis automatisch angepasst werden, aber bei MS ist nichts normal. Ich werde mal versuchen auf Late-Binding umzustellen, was bei diesem Anwendungsfall jedoch nicht zwangsläufig funktionieren muss (ein typischer Ausnahmefall!?).

Anzeige
AW: läuft nicht mit Office2010...
23.12.2015 16:18:16
jens
Hallo,
ich finde deine Datei super.
Aber ich habe nachfolgende Fragen.
Für was brauch ich die Unter und Unter-unter-Ordner Funktion?
Könntest du beim Speichern automatisch den Dateinamen so anpassen lassen dass für den Ausgang der Dateiname so gespeichert wird.
AJJMMTT1234Betreff
Dabei stellen 1234 die ersten vier Zeichen nach dem @-Zeichen dar. z.B. bei info@siemens.de wären dies: siem.
Für die Eingangsemails sollte das Ganze so aussehen.
EJJMMTT1234Betreff
Das Datum der Email JJMMTT ist natürlich das Eingangs bzw. Ausgangsdatei der Email.
Der Betreff sollte aber so wie in deiner Userform nachträglich noch angepasst werden können.
Das einzige was fest vorgegeben wird ist dann somit
EJJMMTT1234 bzw.
AJJMMTT1234.
Kannst du mir hierzu weiterhelfen?

Anzeige
AW: läuft nicht mit Office2010...
23.12.2015 17:12:00
mumpel

Zitat:
(...) Für was brauch ich die Unter und Unter-unter-Ordner Funktion (...)
____________________________
Quelle: Herber-Forum


Ich habe in meinem Posteingang Unterordner mit Unterordnern. Für jeden Ordner und Unterorder ein eigenes Kombinationsfeld (bzw. eine eigene Behandlung) ist besser. Da die Datei bei mir so vorliegt habe ich die genommen, anstatt alles neu zu schreiben.

Zitat:
(...) dass für den Ausgang der Dateiname so gespeichert wird. AJJMMTT1234Betreff (...)
____________________________
Quelle: Herber-Forum


Das ist nicht so einfach. Aber machbar.

Anzeige
AW: läuft nicht mit Office2010...
23.12.2015 17:55:31
jens
ach dann ist mir das Klar.
man kann z.b für verschiedene Themen verschiedene Ordner machen und muss dann damit den Speicherort nicht immer bei jeder Email wechseln, weil man sowieso schon das gleiche Themen bzgl. des Unterordners hat.
Gute Idee.

AW: läuft nicht mit Office2010...
23.12.2015 19:29:34
mumpel
https://www.herber.de/bbs/user/102439.zip
Mal ein Versuch. Beim Postausgang gibt es jedoch ein kleines Problem. Wenn zum Empfänger ein Anzeigename existiert wird nur dieser ausgelesen, an die Emailadresse kommt man dann nicht. Daher muss man in solchen Fällen den Anzeigenamen nehmen anstelle der 4 Zeichen des Servers. Oder brauchst Du die Emaildresse des Absenders (in diesem Fall Deine Emailadresse) bei ausgehenden Mails?

Anzeige
AW: läuft nicht mit Office2010...
23.12.2015 19:57:44
jens
Hallo,
Besten dank für die Mühe.
Ich weis nicht so recht wie du die Datei nutzt.
Grundsätzlich wäre es super, wenn ich im Postausgang und im Posteingang Ordner anlegen würde. z.b. 1 und 2
Diese Ordner würden dann in Excel eingelesen. Über den übergeordneten Ordner (Ausgang/Eingang) weis er dann das A oder E.
Für diese Ordner könnte man jeweils einen Pfad festlegen in dem die Emails gespeichert werden.
Der Betreff könnte dann wieder abgeändert werden, Ebenso kann die Email angezeigt werden.
Desweiterem wird zuerst über einen Button die Userform aufgerufen und dann kann man den Ordner wählen. Danach werden die Emails eingelesen.
Bisher werden immer alle Email zuerst eingelesen.
oder hat das einen speziellen Grund.
Interessant wäre auch warum, die Spalten im Sheet beschriftet sind mit z.b Betreff. Hier wird ja nichts eingetragen oder?
Also zumindest bei mir momentan nicht. Oder für was ist das gut?
Es sollte eigentlich immer die externe Emailadresse verwendet werden egal ob Eingang oder Ausgang.
Gibt es hierzu keine Möglichkeit?
Was ist wenn im Posteingang eine Email ist deren Absender auch als Anzeigename nur noch vorhanden ist?
Gibt es hierzu auch die Probleme dann?
Ebenso muss muss ich zuerst die Outlook Libary einbinden. (Version 16 findet er nicht, ich habe 15 ausgewählt)
Leider kann ich deine schöne Datei nicht ausprobieren, da er mir immer während des Einlesens einen Fehler bringt und die Zeile
ComboBox9.AddItem olFolder.Items.Item(olItemsCount).SenderEmailAddress
Gelb markiert.
Hoffe zu kannst mir hierzu eine Auskunft geben.
Vielen Dank.

Anzeige
AW: läuft nicht mit Office2010...
23.12.2015 20:46:20
mumpel

Zitat:
Interessant wäre auch warum, die Spalten im Sheet beschriftet sind mit z.b Betreff. Hier wird ja nichts eingetragen oder?
____________________________
Quelle: Herber-Forum


Das war die ursprüngliche Funktion der Datei. Wenn Du in der Useform auf "Emails einlesen" klickst werden die Emails in die zum Postfach gehörende Tabelle geschrieben.

Zitat:
Bisher werden immer alle Email zuerst eingelesen
____________________________
Quelle: Herber-Forum


Absicht. Arbeitserleichterung.

Zitat:
Was ist wenn im Posteingang eine Email ist deren Absender auch als Anzeigename nur noch vorhanden ist?
____________________________
Quelle: Herber-Forum


Beim Eingang wird mit "SenderEmailAddress" die Emailadresse des Absenders eingelesen, also kein Problem. Das Problem betrifft nur ausgehende Mails.

Zitat:
(...) da er mir immer während des Einlesens einen Fehler bringt (...) olFolder.Items.Item(olItemsCount).SenderEmailAddress (...)
____________________________
Quelle: Herber-Forum


Dann passt etwas mit den Emailadressen nicht.

Zitat:
(...) wenn ich im Postausgang und im Posteingang Ordner anlegen würde (...)
____________________________
Quelle: Herber-Forum


Da schau ich morgen mal nach, wenn ich Zeit finde (bin auf Spätschicht).

Anzeige
AW: läuft nicht mit Office2010...
24.12.2015 10:57:04
jens
Hallo,
Danke für die Info.
als Ergänzung dazu.
Ich bräuchte es nicht, dass der ganze Posteingang und Ausgang eingelesen wird.
Besser wäre es, wenn die Userform aufgehen würde, man könnte dann wählen welches Postfach mal will, danach dann den Posteingang oder Ausgang, und danach dann die jeweiligen Ordner im Ausgang oder Eingang.
Danach dann den Speicherort.
Für den jeweiligen Ordner wäre der Apeicherort dann fest und müsste nicht für jede Email in dem Ordner neu vergeben werden.
Der Betreff sollte geändert werden können. Ebenso sollte die Email anzeigbar sein.
Werden die abgespeicherten Emails dann in die Exceldatei (Sheet) eingetragen?
Alle Emails aus dem Postausgang werden mit A und alle Emails aus dem Posteingang mit E bezeichnet.
sprich Format.
A1512241234Betreff und
A1512241234Betreff
Kann man die ersten 4 Buchstaben nach dem @Zeichen auch für Emails aus dem Postausgang verwenden oder ist das gar nicht möglich?
Besten Dank für die Info und deine Hilfe.
Gruß

Anzeige
AW: läuft nicht mit Office2010...
24.12.2015 11:51:31
jens
sry natürlich muss es so heissen.
A1512241234Betreff und
E1512241234Betreff

AW: läuft nicht mit Office2010...
24.12.2015 12:46:35
mumpel

Zitat:
Ebenso sollte die Email anzeigbar sein.
____________________________
Quelle: Herber-Forum


Das ist schon jetzt möglich. Allerdings nicht in der Userform.
Vielleicht schaust Du Dir den VBA-Code mal an. Dann könntest Du mal versuchen selber anzupassen. Das könntest Du dann auch direkt in Outlook programmieren, ohne Excel nutzen zu müssen.

Anzeige
AW: läuft nicht mit Office2010...
24.12.2015 12:56:44
jens
Hallo,
ich habe deinen Code schon angeschaut.
Aber ich komme damit ehrlich gesagt nicht zurecht, dazu fehlen mir einfach die Kenntnisse.
Ich verstehe nur immer wieder partielle Teile davon.
Das mit dem Anzeigen der Email meinte ich auch so, dass das Outlookfenster aufgeht.
Hilfst du mir hierzu? Also in Excel das Ganze oder vllt. sogar direkt in Outlook!?
Gruß

AW: läuft nicht mit Office2010...
24.12.2015 14:51:31
mumpel
Bist Du sicher dass Du den Postausgang brauchst und nicht die "Gesendete Elemente"?

AW: läuft nicht mit Office2010...
24.12.2015 15:10:23
jens
Ich werde die Email die ich abspeichern will aus dem Ordner Gesendete Elemente, in die jeweiligen Unterordner des Postausgangs ziehen.
Deshalb passt das dann schon so, mit dem Postausgang.
Desweiterem habe ich auch Unterordner im Posteingang gemacht.

AW: läuft nicht mit Office2010...
24.12.2015 15:27:36
mumpel
Brauchst Du nur die Unterordner, oder auch die Emails im Hauptorder "Posteingang"?

AW: läuft nicht mit Office2010...
24.12.2015 15:41:23
jens
nein nur immer die Unterordner.
Egal ob Eingang oder Ausgang.

AW: läuft nicht mit Office2010...
24.12.2015 18:14:02
jens
Hallo
vielen Dank. funktioniert SUPER :)
Habe einen Fehler entdeckt. Es war der falsche Bezug auf die Emailadresse drin.
Nun funktioniert das ganze tiptop.
Konntest du das Problem lösen mit dem Ausgang wenn ein Anzeigename definiert ist oder kann es noch zu Problemen kommen?
Wie müsste man den Code erweitern, dass nach dem Speichern der Email automatisch die Email in dem Unterordner gelöscht wird?
Kann man den Code aus Excel (Userform etc) direkt in Outlook übertragen, sodass man die Funktion hier direkt nützen kann?
Oder muss man hierzu bestimmte Codeteile anpassen?
gruß

AW: läuft nicht mit Office2010...
24.12.2015 18:27:33
jens
Hallo,
habe es geschafft das Ganze rüber zu kopieren.
Aber eine Email kann man nicht anzeigen lassen, Er bringt dann den Fehler, das eine Dialogfenster offen ist.
Die Userform halt.
Hast du hierzu eine Idee eine abschließende Idee?
gruß

AW: läuft nicht mit Office2010...
24.12.2015 18:29:53
mumpel

Zitat:
(...) Es war der falsche Bezug auf die Emailadresse drin (...)
____________________________
Quelle: Herber-Forum


Wo genau?

Zitat:
(...) Konntest du das Problem lösen mit dem Ausgang (...)
____________________________
Quelle: Herber-Forum


Das lässt sich anscheinend nicht lösen. Einen passenden Parameter habe ich nicht gefunden.

Zitat:
(...) dass nach dem Speichern der Email automatisch die Email in dem Unterordner gelöscht wird (...)
____________________________
Quelle: Herber-Forum


 With Item
     .SaveAs tbxEingang & "E" & _
             Format(ComboBox10.Value, "YYMMDD") & _
             strAddress & strTxtSZ & ".msg", olMSG
     .Delete
 End With

VBA/HTML - CodeConverter, AddIn für Excel/Word 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Zitat:
(...) Kann man den Code aus Excel (Userform etc) direkt in Outlook übertragen (...)
____________________________
Quelle: Herber-Forum


Nur wenn Du auf die Anzeigefunktion verzichten kannst. In Outlook kann man Emails nicht (programmatisch) anzeigen (lassen) solange Meldungen und Dialoge geöffnet sind. Einzige Lösung wäre die Email in eine (temporäre) HTML-Datei umzuwandeln und diese im Browsersteuerelement anzuzeigen.

AW: läuft nicht mit Office2010...
24.12.2015 19:14:51
jens
Ok. Das habe ich alles verstanden.
Etwas ist mir noch aufgefallen.
Wenn ich im Postausgang einen Ordner und wähle und im Ausgang auch einen Ordner dann werden die Emails auch super einlesen, aber im Ausgang wird nicht die richtige Emailadresse der betreffenden Email angezeigt sondern die Emailadresse aus dem Eingang.
z.b Wähle ich die dritte Email im Ausgang aus, dann zeigt es mir im Ausgang die Emailadresse der dritten Email des Eingangs an.
Ich finde aber den Fehler nicht weist du hierzu was?
gruß

AW: läuft nicht mit Office2010...
24.12.2015 19:24:35
jens
wobei ich mir momentan nicht mehr sicher bin, ob es überhaupt genau die entsprechende Emailadresse aus dem Eingangspostfach ist.
Warum ist es eigentlich so, dass wenn ich die Userform öffne, der Downmenü für den Posteingang nichts anzeigt aber das Downmenü des Postausgangs schon.
Wenn dann sollte beide anfangs nichts anzeigen.
Mehr habe ich nicht mehr Anzumerken.
Vielen Dank nochmals.

AW: läuft nicht mit Office2010...
24.12.2015 19:44:21
mumpel
Hier mal eine Möglichkeit. Die Email wird temporär als HTML-Datei gespeichert und in einer Userform mit Webbrowser-Steuerelement angezeigt. Dateien entpacken und in Outlook importieren (eine eventuell gleichlautende Userform vorher löschen). https://www.herber.de/bbs/user/102445.zip

Zitat:
sondern die Emailadresse aus dem Eingang
____________________________
Quelle: Herber-Forum


Kann ich jetzt nicht nachvollziehen. Eventuell liegt das an der Unterhaltungsfunktion. Wenn Du "Als Unterhaltung anzeigen" deaktivierst?

AW: läuft nicht mit Office2010...
24.12.2015 21:06:12
jens
Hallo
habe den Fehler gefunden. Es lag wirklich an der Unterhaltungsansicht.
Danke für den Hinweis, ich werde deine Neue Zip-Datei mal ausprobieren.
Bin aber mit der ersten Lösung super zufrieden
Eine abschließende Sache gibt es noch.
Ist es möglich irgendwie den Betreff zwar mit Leerschritte einzugeben, aber beim Speichern werden die Leerschritte aus dem Betreff automatisch entfernt.
Ebenso sollten der Betreff erst denn geändert werden können, wenn der jeweilige Haken (Betreff ändern) gesetzt wird.
Dies würde noch eine Arbeitserleichterung darstellen.
Alles andere ist wunderbar.
Besten Dank für die Hilfe und noch frohe Weihnachten.
gruß

AW: läuft nicht mit Office2010...
24.12.2015 21:12:20
jens
OH habe noch was vergessen.
Wenn ich zwischen den Ordnern umschalte beim Posteingang, dann lädt er zwar die Betreffs der jeweiligen Emails in die Zeile rein, aber die Emailadressen werden nicht mit übernommen.
Sprich der Bezug der Emailadresse bleibt auf den Emailadressen des ersten ausgewählten Ordners.
Kannst du dir daraus einen Reim machen?

AW: läuft nicht mit Office2010...
24.12.2015 22:32:51
mumpel

Zitat:
aber die Emailadressen werden nicht mit übernommen
____________________________
Quelle: Herber-Forum


Die Comboboxen werden nicht geleert, dadurch werden die Emailadressen einfach hinten angehängt.

Zitat:
(...) aber beim Speichern werden die Leerschritte aus dem Betreff automatisch entfernt (...)
(...) Ebenso sollten der Betreff erst denn geändert werden können (...)
____________________________
Quelle: Herber-Forum


Lässt sich machen.

AW: Outlook Email per VBA speichern
25.12.2015 12:25:09
jens
Hallo
danke für die Mühe.
Aber das mit der Betreffzeile ist noch nicht ganz so wie ich es meinte.
Es sollte möglich sein nach dem Laden des Unterordners bzw. Füllen der Betreffzeile, zwar das E-Mails auswählen zu können, (sprich Dropdownmenü ausfahren) aber eine Änderung des Betreffs ist erst möglich wenn der Haken gesetzt wird.
Geht so was?
Weil jetzt ist es so, dass das komplette Menü nicht verwendet werden kann, solange nicht der Haken gesetzt ist.
Durch den Haken sollte eigentlich nur die Funktion zum Ändern des Betreffs eingeschränkt werden, jedoch nicht die Auswahl der Emails durch das Dropdownmenü.
Gruß

AW: Outlook Email per VBA speichern
25.12.2015 12:40:11
jens
Habe nun deinen tollen Webbrower eingebunden.
Kann man das Browserfenster auch irgendwie in die erste Userform integrieren, sodass nicht ein zweites Fenster benötigt wird.
Dann ist alles perfekt.
Vielen Vielen Dank schon mal für die tolle Hilfe.
Gruß

AW: Outlook Email per VBA speichern
25.12.2015 12:46:11
mumpel
Das mit dem Kombinationsfeld war ein Denkfehler. Ich habe jetzt eine transparente Textbox über die Felder gelegt. Diese Textbox wird ausgeblendet wenn man den Haken setzt und wieder eingeblendet wenn der Haken entfernt wird. Die Emailanzeige ist jetzt in der ersten Userform integriert (ich hoffe dass Dein Bildschirm groß genug ist für die Anzeige). https://www.herber.de/bbs/user/102448.zip
So, und jetzt muss ich zur Spätschicht.

AW: Outlook Email per VBA speichern
25.12.2015 12:42:41
jens
Hallo,
das mit dem Einbinden des Webbrowers habe ich hinbekommen.

AW: Outlook Email per VBA speichern
25.12.2015 15:53:54
jens
So alles funktioniert super.
Vielen Dank für die Tolle und fachliche Unterstützung.
Ich hätte versucht das Einlesen der E-Mails aus den Ordner noch von den Kategorien abhängig zu machen die ich bei den Emails vergeben.
Es sollen nur Emails eingelesen werden, dessen Status auf erledigt ist.
Dazu habe ich diese Seite gefunden.
http://www.access-im-unternehmen.de/849
Aber irgendwie klappe es nicht.
Hast du eine wirklich letzte Idee?
gruß

AW: Outlook Email per VBA speichern
25.12.2015 16:26:06
mumpel
Ich schau es mir am Sonntag mal an (oder vielleicht schon morgen früh). Ich kann nurnoch von zuhause vernünftig im Internet arbeiten, mein Traffic ist für diesen Monat aufgebraucht.

AW: Outlook Email per VBA speichern
25.12.2015 16:57:49
jens
Ok besten Dank.
Ich suche gerade nach einer Möglichkeit in Outlook alte Email die z.b älter als eine bestimmte Anzahl von Tage sind zu löschen.
Aber eben nur die E-Emails die im Posteingang sind und unter den gesendeten Elementen. Die Emails in den Unterordnern des Posteingangs und Postausgangs sollen davon unberührt bleiben.
Hast du hierzu eine Idee wie man so was lösen könnte? ggf. in die Userform noch als Button mit einbinden.
Ich könnte schon alle E-Mails einfach markieren und löschen, aber das ist sehr aufwendig.
oder kann das Outlook irgendwo in einer versteckten Funktion?
Gruß

AW: Outlook Email per VBA speichern
25.12.2015 19:29:37
mumpel
Dafür habe ich zuhause einen passenden Code. Den werde ich am Sonntag oder Montag mal raussuchen.

Nachtrag
25.12.2015 22:57:56
mumpel
Den Code habe ich sogar dabei. Wichtig zu erwähnen ist dass die Emails sofort (direkt) gelöscht werden, sie werden nicht im Papierkorb abgelegt.
Sub GetNumberOfMailsToday()
    
    Dim olName      As Outlook.Namespace
    Dim olFolder    As Outlook.MAPIFolder
    Dim olItems     As Outlook.Items
    
    Dim lngInt          As Long
    Dim lngItemsCount   As Long
    Dim lngMailAge      As Long
    
    Dim lngRCTime       As Date
    Dim lngNWTime       As Date
    


    If MsgBox("Möchten Sie die Emails wirklich löschen?" & _
              " Dies kann nicht rückgängig gemacht werden.", 36, "Hinweis") = vbNo Then Exit Sub
              
              
    lngMailAge = InputBox("Bitte Alter der zu löschenden Emails angeben")

    Set olName = Application.GetNamespace("MAPI")
    Set olFolder = olName.Session.Folders("RMH Software & Media").Folders("Posteingang")
    
    lngItemsCount = 0
    
         Set Application.ActiveExplorer.CurrentFolder = olFolder
         Set olItems = olFolder.Items
            
             For lngInt = olItems.Count To 1 Step -1
                 If TypeOf olItems(lngInt) Is Outlook.MailItem Then
                    lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
                    lngNWTime = Format(Now, "DD.MM.YYYY")
                    If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
                 End If
             Next lngInt
             
             
    Set olFolder = olName.Session.Folders("RMH Software & Media").Folders("Gesendete Elemente")
    lngItemsCount = 0
    
         Set Application.ActiveExplorer.CurrentFolder = olFolder
         Set olItems = olFolder.Items
            
             For lngInt = olItems.Count To 1 Step -1
                 If TypeOf olItems(lngInt) Is Outlook.MailItem Then
                    lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
                    lngNWTime = Format(Now, "DD.MM.YYYY")
                    If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
                 End If
             Next lngInt
    
End Sub

VBA/HTML - CodeConverter für Office-Foren, komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


AW: Nachtrag
26.12.2015 14:49:49
jens
Hallo,
danke für den Code.
Habe ihn probiert anzupassen.
Private Sub CommandButton11_Click()
Dim olName      As Outlook.Namespace
Dim olFolder    As Outlook.MAPIFolder
Dim olItems     As Outlook.Items
Dim lngInt          As Long
Dim lngItemsCount   As Long
Dim lngMailAge      As Long
Dim lngRCTime       As Date
Dim lngNWTime       As Date
If MsgBox("Möchten Sie die Emails wirklich löschen?" & _
" Dies kann nicht rückgängig gemacht werden.", 36, "Hinweis") = vbNo Then Exit  _
Sub
lngMailAge = InputBox("Bitte Alter der zu löschenden Emails angeben")
Set olName = Application.GetNamespace("MAPI")
Set olFolder = olName.Session.Folders(ComboBox1.Text).Folders("Posteingang")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
Set olFolder = olName.Session.Folders(ComboBox1.Text).Folders("Gesendete Elemente")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
End Sub
Aber ist es normal, dass zuerst 5-10 Sekunden der Zeiger zum Ring wird, wobei ich vermute, dass er hier die Abfrage startet danach kommt wieder der Mauszeiger von neun und dann wieder zyklisch der Ring.
Es ist auch so, dass sehr schnell von der Userform oben angezeigt wird. (Keine Rückmeldung)
Habe ich was falsch gemacht?

AW: Nachtrag
26.12.2015 15:05:08
mumpel
Die Userform sollte geschlossen sein wenn dieser Code läuft. Daher den Code (den von mir) besser in ein allgemeines Modul. Für CommandButton11_Click dann folgenden Code.
Private Sub CommandButton11_Click()
  Me.Hide
  Call GetNumberOfMailsToday
  frmReadEmails.Show
End Sub

VBA/HTML - CodeConverter für Office-Foren, in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


AW: Nachtrag
26.12.2015 15:09:55
jens
Als Ergänzung:
Das Makro Lief durch. ICh befand mich dann auch im Ordner gesendete Elemente.
Bei der Eingabe Emails älter als habe ich 1300 eingegeben. Somit müssten alle Emails die nach dem Juni 2012 empfangen oder gesendet wurden gelöscht sein,
Die Emails sind aber immer noch im Ordner drinnen.
Weist du warum?
Irgendwie ist mir nicht bewusst, als das ich etwas vergessen hätte anzupassen.
Noch eine Frage hinterher.
Gibt es die Möglichkeit irgendwie schon beim Einlesen der Emails aus dem Ausgangsordner den Anzeigename zu entfernen, sodass wirklich nur die E-Mail Adresse vorhanden ist?
Ggf. sogar automatisch?
Gruß

AW: Nachtrag
26.12.2015 15:36:02
mumpel
1. Das hast Du falschherum verstanden. Heute - 1300 Tage = 04. Juni 2012. Alles was bis zu diesem Tag eingelaufen ist wird gelöscht, alles danach bleibt erhalten. Also Wenn Datum heute minus Tage >= Ergebnis dann löschen. Somit genau umgekehrt als Du gedacht hast. Möchtest Du es andersrum haben musst Du >= in <= ändern.
2. Den Anzeigenamen bekommt man nicht weg. Erwähnte ich aber schon.

AW: Nachtrag
26.12.2015 15:51:36
jens
sry habe mich falsch ausgedrückt.
Natürlich alles was vor dem Datum eingelaufen ist wird gelöscht mit dem grössergleich Zeichen.
Die Emails werden aber nicht gelöscht.
Hast du eine Antwort. Ich meinen Code auch gepostet. Habe nur angepasst hinsichtlich der Kontowahl aus Combobox1.

AW: Nachtrag
26.12.2015 15:54:53
jens
Ich Posteingang sind aber nicht alle Emails vorhanden. ich muss zuerst nach unten scrollen und dann kann ich auf den Link klicken. Es sind weitere Emails auf dem Server vorhanden.
Wenn ich darauf klicke, sehe ich alle EMails.
kann es sein, dass das Skript die nicht berücksichtigt, weil sonst müssten genau diese, da sie älter als 1300 Tage sind gelöscht werden.

AW: Nachtrag
26.12.2015 16:03:52
mumpel
Ich kann das nicht nachvollziehen. Alle Emails im Posteingang sollten gelöscht werden. Mit dem Scrollen hat das nichts zu tun. Der Code berücksichtigt alle Emails im angegebenen Ordner. Allerdings nutze ich POP3. Nutzt Du etwa IMAP?

AW: Nachtrag
26.12.2015 19:31:04
jens
Ich habe ein Microsoft Exchange Konto.
Ich lade gerade alle Emails direkt vom Server in Outlook (Microsoft-Cache-Modus auf alle gestellt) vllt. liegt es da dran, da ja eigentlich nicht alle Emails in den Ordnern direkt sind...

AW: Nachtrag
26.12.2015 19:42:54
mumpel
Da haben wir es. VBA hat nur auf das Zugriff was in der PST/OST-Datei verfügbar ist. Auf den Server hat man mit diesem Code keinen Zugriff. Mir ist auch nicht bekannt dass das so einfach möglich wäre. Um aus VBA heraus auf einen Exchange-Server direkt zugreifen zu können muss man schon etwas mehr und umfangreicher programmieren. Das kann ich aber nicht da ich keinen Exchangeserver habe und mir auch die Erfahrungen mit Exchange fehlen.

AW: Nachtrag
26.12.2015 19:49:02
jens
oh... ok dann ist klar warum.
Aber wenn ich einfach alle E-Mails auf den PC lade (Also keinen Onlinemodus) dann habe ich alle im Postfach und könnte die entsprechenden E-Mails doch wieder löschen oder?

AW: Nachtrag
26.12.2015 19:59:23
mumpel
Wenn alle Emails im Postfach liegen sollte es funktionieren. Kann aber länger dauern. Achte darauf dass es nicht zuviele sind. Die PST-Datei darf zwar 2GB haben, aber wenn irgendetwas zerstört wird bringen die 2GB nichts. ;-)

AW: Nachtrag
26.12.2015 15:09:50
mumpel
Im Übrigen ist das normal, da es ja zwei Schleifen (aufgrund der zwei Ordner) sind.

AW: Nachtrag
26.12.2015 15:18:18
jens
Ich muss dazu sagen, die Emails die so alt sind, die sehe ich nicht direkt in Outlook.
ich muss ganz nach unten gehen und auf den link klicken. Weitere Emails vom Server anzeigen.
Den genauen Wortlaut weis ich nicht mehr.
Kann es damit zusammenhängen?

AW: Nachtrag
26.12.2015 15:40:40
jens
Habe es nochmals durchlaufen lassen.
Irgendwie scannt er zwar.
Aber die Dateien werden nicht gelöscht.
Ich habe deinen Code nur so abgeändert, das der Account über die Combobox gewählt wird.
Sub GetNumberOfMailsToday()
Dim olName      As Outlook.Namespace
Dim olFolder    As Outlook.MAPIFolder
Dim olItems     As Outlook.Items
Dim lngInt          As Long
Dim lngItemsCount   As Long
Dim lngMailAge      As Long
Dim lngRCTime       As Date
Dim lngNWTime       As Date
If MsgBox("Möchten Sie die Emails wirklich löschen?" & _
" Dies kann nicht rückgängig gemacht werden.", 36, "Hinweis") = vbNo Then Exit _
Sub
lngMailAge = InputBox("Bitte Alter der zu löschenden Emails angeben")
Set olName = Application.GetNamespace("MAPI")
Set olFolder = olName.Session.Folders(frmReadEmails.ComboBox1.Text).Folders("Posteingang")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
Set olFolder = olName.Session.Folders(frmReadEmails.ComboBox1.Text).Folders("Gesendete  _
Elemente")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
End Sub

AW: Nachtrag
26.12.2015 15:42:03
jens
Habe es nochmals durchlaufen lassen.
Irgendwie scannt er zwar.
Aber die Dateien werden nicht gelöscht.
Ich habe deinen Code nur so abgeändert, das der Account über die Combobox gewählt wird.
Sub GetNumberOfMailsToday()
Dim olName      As Outlook.Namespace
Dim olFolder    As Outlook.MAPIFolder
Dim olItems     As Outlook.Items
Dim lngInt          As Long
Dim lngItemsCount   As Long
Dim lngMailAge      As Long
Dim lngRCTime       As Date
Dim lngNWTime       As Date
If MsgBox("Möchten Sie die Emails wirklich löschen?" & _
" Dies kann nicht rückgängig gemacht werden.", 36, "Hinweis") = vbNo Then Exit _
Sub
lngMailAge = InputBox("Bitte Alter der zu löschenden Emails angeben")
Set olName = Application.GetNamespace("MAPI")
Set olFolder = olName.Session.Folders(frmReadEmails.ComboBox1.Text).Folders("Posteingang")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
Set olFolder = olName.Session.Folders(frmReadEmails.ComboBox1.Text).Folders("Gesendete  _
Elemente")
lngItemsCount = 0
Set Application.ActiveExplorer.CurrentFolder = olFolder
Set olItems = olFolder.Items
For lngInt = olItems.Count To 1 Step -1
If TypeOf olItems(lngInt) Is Outlook.MailItem Then
lngRCTime = Format(olItems(lngInt).ReceivedTime, "DD.MM.YYYY")
lngNWTime = Format(Now, "DD.MM.YYYY")
If lngNWTime - lngRCTime >= lngMailAge Then olItems(lngInt).Delete
End If
Next lngInt
End Sub
Das Alter der Emails muss ich schon in tagen eingeben oder?

AW: Nachtrag
26.12.2015 15:52:43
mumpel
Wenn Du keine Emails hast die älter sind als 1300 Tage dann kann nichts gelöscht werden. Siehe Antwort von 26.12.2015 15:36:02

AW: Outlook Email per VBA speichern
25.12.2015 22:29:07
mumpel
Hier eine Möglichkeit. Bei dieser wird geprüft ob das grüne Häkchen gesetzt ist.
Private Sub ComboBox4_Change()
On Error Resume Next
ComboBox7.Clear
ComboBox10.Clear
ComboBox13.Clear
ComboBox14.Clear
Set olFolder = olName.Session.Folders(ComboBox1.Text).Folders("Postausgang").Folders(ComboBox4.Text)
TextBox3.Text = olFolder.StoreID
   For olItemsCount = 1 To olFolder.Items.Count
       If olFolder.Items.Item(olItemsCount).FlagStatus = olFlagComplete Then
          ComboBox7.AddItem olFolder.Items.Item(olItemsCount).Subject
          ComboBox10.AddItem olFolder.Items.Item(olItemsCount).EntryID
          ComboBox13.AddItem olFolder.Items.Item(olItemsCount).To
          ComboBox14.AddItem olFolder.Items.Item(olItemsCount).ReceivedTime
          ComboBox7.ListIndex = 0
       End If
   Next olItemsCount
End Sub

VBA/HTML - CodeConverter für Office-Foren, komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Wenn Du eine eigene Kategorie vergeben hast (NICHT das grüne Häkchen) dann so. Den Namen der Kategorie musst Du natürlich an Deine Bedürfnisse anpassen.
Private Sub ComboBox4_Change()
On Error Resume Next
ComboBox7.Clear
ComboBox10.Clear
ComboBox13.Clear
ComboBox14.Clear
Set olFolder = olName.Session.Folders(ComboBox1.Text).Folders("Postausgang").Folders(ComboBox4.Text)
TextBox3.Text = olFolder.StoreID
   For olItemsCount = 1 To olFolder.Items.Count
       If olFolder.Items.Item(olItemsCount).Categories = "Erledigt" Then
          ComboBox7.AddItem olFolder.Items.Item(olItemsCount).Subject
          ComboBox10.AddItem olFolder.Items.Item(olItemsCount).EntryID
          ComboBox13.AddItem olFolder.Items.Item(olItemsCount).To
          ComboBox14.AddItem olFolder.Items.Item(olItemsCount).ReceivedTime
          ComboBox7.ListIndex = 0
       End If
   Next olItemsCount
End Sub

VBA/HTML - CodeConverter für Office-Foren, komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


AW: Outlook Email per VBA speichern
29.12.2015 11:32:39
Jens
Hallo,
bin gerade beim Speichern meiner 2000 E-Mails.
Funktioniert super. besten Dank nochmals.
Was mir dabei noch aufgefallen ist, wenn ich eine E-Mail speichere und diese dann über den Code gleich löschen lasse in dem Ordner, ist Sie immer noch in der Combobox mit dem Betreff zusehen. Ist es möglich nach dem Löschen der E-Mails diese zu aktualisieren, oder kann es dann sein, dass dies ewig dauert, wenn ich viele E-Mails im jeweiligen Ordner habe.
Falls das so wäre, könnte man nicht einfach die gelöschte E-Mail in dem Dropdownmenü durchstreichen. Somit wäre es er kenntlich welche E-mails man bereits gespeichert hat.
Auch wäre es super, wenn man für die beiden Comboboxen in denen der Betreff angezeigt wird, jeweils eine Anzeige wo hätte wieviele E-Mails noch offen sind sprich nicht gespeichert und gelöscht. Vllt. kann man das über den jeweiligen Ordner abgreifen. Da ich ja hier Kriterien vergeben habe. Nur E-Mails mit dem richtigen Kriterium werden in die Combobox geladen. Wenn ich aber in den jeweiligen Ordner schaue und lasse die Emails nach dem Kriterien sortieren, zeigt er mir die Anzahl der E-Mails an.
Kann man diese Anzahl noch irgendwie mit einbinden in die Userform?
Gruß

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige