VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a.

Moderator: ModerationP

VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a.

Beitragvon Berghüttenwart » 17. Apr 2019, 15:10

Hallo liebe Experten,

ich habe einen VBA-Code zusammengestellt (zum größten Teil von anderen kopiert), der E-Mails mit einem Zeitstempel im Betreff abspeichert.

Nun möchte ich das Ganze noch weiter optimieren:

1. Es soll eine Speicherortauswahl wie im gewohnten "Speichern unter"-Fenster möglich sein (an der Stelle, wo jetzt "Pfad = InputBox("Wo möchten Sie diese Mail(s) speichern?", "E-Mail-Speicherung", "E:\")" steht). Momentan muss ich den Pfad entweder reinschreiben oder reinkopieren.
2. Außerdem sollen aus dem Betreff die Kürzel wie "AW:", "Fw:" oder "WG:" gefiltert werden, um die 10 Zeichen sinnvoller zu nutzen.
3. Der aktuelle Code ermöglicht keine Speicherung von Besprechungseinladungen und -zusagen/-ablehnungen. Wenn dies noch möglich wäre, dann wäre der Code nach jetzigen Ansprüchen nahezu perfekt.

Könnte mir da jemand helfen?

Der aktuelle Code sieht so aus:

-----------------------------------------------------------------------------------
Private Lfn As Integer
Private Pfad As String

Sub Markierte_Mails_Speichern()
'hier den gewünschten Pfad zum Speichern festlegen

'PfadOrdner = Application.ActiveExplorer.Selection(1).Subject
Pfad = InputBox("Wo möchten Sie diese Mail(s) speichern?", "E-Mail-Speicherung", "E:\")

On Error GoTo Fehler
' Variablen
Dim Ordner As MAPIFolder
Dim SelektierteMail As MailItem
Dim Selektion As Selection
Dim Anzahl_kopierte_Mails As Integer

'Objekte zuweisen
Set Ordner = Application.ActiveExplorer.CurrentFolder
Set Selektion = Application.ActiveExplorer.Selection
Anzahl_kopierte_Mails = 0

If Selektion.Count = 0 Then
MsgBox "Bitte Mails auswählen!"
Else
For Each SelektierteMail In Selektion
Mail_Speichern SelektierteMail
Anzahl_kopierte_Mails = Anzahl_kopierte_Mails + 1
Next
End If
MsgBox "Kopiervorgang beendet, " & Anzahl_kopierte_Mails & " Mail(s) kopiert"
Exit Sub
Fehler:
MsgBox Err.Description + " Bitte sicherstellen, dass im gewählten Ordner Mails markiert sind und der Ordner ein Mailordner ist!"
End Sub


Private Sub Mail_Speichern(ByVal Mail As Object)

Dim Betreff As String
Dim Absender As String
Dim SaveString As String
Dim AuftragsNr As String
Dim Eingangsdat As String


If TypeName(Mail) = "MailItem" Then
Absender = Mail.SenderName
Betreff = Mail.Subject
Eingangsdat = Format(Mail.ReceivedTime, "YYYY-MM-DD_hh-mm-ss")

'stellt eine 4 stellige Laufnummer voran, damit sich Mails mit gleichem Betreff und Absender nicht doppeln
'die Formation ist zur besseren Sortierung im Explorer, bei mehr als 10000Mails einfach mehr Nullen voranstellen lassen

Betreff = Eingangsdat & "_" & Format$(Lfn, "00") & "_" & Absender & Left(Betreff, 10)

'Folgende Zeilen filtern alle möglichen Sonderzeichen raus, die nicht als Dateinamen auftreten dürfen
Betreff = Replace(Betreff, ":", "-")
Betreff = Replace(Betreff, "*", "#")
Betreff = Replace(Betreff, """", "#")
Betreff = Replace(Betreff, "|", "#")
Betreff = Replace(Betreff, "?", "(Frgzchn)")
Betreff = Replace(Betreff, ">", "-")
Betreff = Replace(Betreff, "<", "-")
Betreff = Replace(Betreff, "/", "-")
Betreff = Replace(Betreff, "\", "-")
Betreff = Replace(Betreff, ", ", "_")
Betreff = Replace(Betreff, ".", "-")
Betreff = Replace(Betreff, "@", "-at-")


'Pfad zusammen stellen
SaveString = Pfad & Betreff & ".msg"

'und Speichern
Mail.SaveAs SaveString, olMSG



End If
Lfn = Lfn + 1
End Sub
------------------------------------------------------------------------------------------
Berghüttenwart
 

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon mmarkus » 18. Apr 2019, 11:04

Seit Office 2007 gibt es die FileDialalog Klasse für diesen Zweck.

Hier der Link zur OH mit genauen Infos und Beispielen.

https://docs.microsoft.com/de-de/office ... filedialog

Ansonsten liefert auch Google hunderte Beispiel dazu.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1462
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon Gast » 09. Mai 2019, 07:26

Hallo MMarkus, vielen Dank für die Antwort!

Momentan fehlen mir noch die Grundlagen der VBA-Programmierung, um das im vorhandenen Code richtig einbauen zu können.
Allerdings bin ich schon zu dem Punkt gekommen, dass ich zwei Anwendungsfälle trennen muss:
1. Abspeichern von Einzel-Mails mit erzeugtem Namen.
2. Abspeichern von allen Mails zu einem Projekt mit automatisch generierten Namen.

Im zweiten Fall scheint mir die Nutzung von "Speichern unter" sowieso unmöglich zu sein, aber im ersten Fall wäre es schön.

AN ALLE:
Punkt zwei aus meinem ersten Beitrag habe ich bereits selbst gelöst,
aber Punkt drei liegt mir noch am Herzen.
Könnte mir da jemand helfen?

Viele Grüße vom "Berghüttenwart"
Gast
 

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon Berghüttenwart » 24. Jun 2019, 09:20

Hallo MMarkus, vielen Dank für die Antwort!

Momentan fehlen mir noch die Grundlagen der VBA-Programmierung, um das im vorhandenen Code richtig einbauen zu können.
Allerdings bin ich schon zu dem Punkt gekommen, dass ich zwei Anwendungsfälle trennen muss:
1. Abspeichern von Einzel-Mails mit erzeugtem Namen.
2. Abspeichern von allen Mails zu einem Projekt mit automatisch generierten Namen.

Im zweiten Fall scheint mir die Nutzung von "Speichern unter" sowieso unmöglich zu sein, aber im ersten Fall wäre es schön.

AN ALLE:
Punkt zwei aus meinem ersten Beitrag habe ich bereits selbst gelöst,
aber Punkt drei liegt mir noch am Herzen.
Könnte mir da jemand helfen?

Viele Grüße vom "Berghüttenwart"
Berghüttenwart
 

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon mmarkus » 25. Jun 2019, 06:49

Berghüttenwart hat geschrieben:Momentan fehlen mir noch die Grundlagen der VBA-Programmierung, um das im vorhandenen Code richtig einbauen zu können.


Vielleich solltest du dich mit damit beschäftigen diesen Zustand zu ändern.
Ohne diese Kenntnisse bleibt man über Jahre ein Copy&Paste Programmierer, ohne Verständnis der Materie unfähig Probleme selbst zu lösen.
Und wir reden hier von VBA, dass nun wirklich nur geringste Anforderungen an einen Entwickler stellt.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1462
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon mumpel » 25. Jun 2019, 09:51

Zu 1.: Das ist in Outlook sehr aufwenig. Stichwort GetSaveFileName (https://www.vbarchiv.net/api/api_getsavefilename.html). Den von mmarkus erwähnten FileDialog gibt es in Outlook nicht (Fehlermeldung: "Objekt unterstützt diese Eigenschaft oder Methode nicht").

Zu 2.: Was meinst Du mit "Filtern"?
Benutzeravatar
mumpel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8101
Registriert: 09. Jan 2005, 15:20
Wohnort: Lindau (B)

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon mmarkus » 25. Jun 2019, 13:29

@mumpel
Einen Verweis auf (z.B.) Ms Office erstellen und den Filedialog einsetzen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1462
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: VBA: Outlook-E-Mails mit "Speichern unter" speichern u.a

Beitragvon Berghüttenwart » 01. Jul 2019, 09:08

Hallo!

Mit Filtern meine ich weglassen (das Makro übernimmt aus dem Betreff der E-Mail die ersten zehn Zeichen in den Dateinamen. Um dabei nicht durch AW, WG, usw. Zeichen zu "verlieren", möchte ich die "rausfiltern", bevor Outlook die zehn Zeichen abzählt).

Den Hinweis von mmarkus möchte ich gerne ändern, würde mich aber über Hinweise freuen, wo ich das effektiv erlernen kann (gibt es irgendeine Seite, wo die Programmiersprache und der Umgang mit dem Editor erklärt sind?)
Bis dahin wäre es sehr freundlich, wenn mir jemand schon jetzt helfen könnte, den Code an Windows 10 und Outlook 365 anzupassen. :-(

Vielen Dank an hilfsbereite Experten im Voraus!

Der Berghüttenwart
Berghüttenwart
 


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste