Registriert seit: 19.09.2017
Version(en): 2016
Hallo Community, ich bin momentan dabei eine E-Mail Ablage in Outlook zu implementieren. Das Ganze soll so funktionieren, dass ich in meinem Menüband einen Button habe, mit dem ich die aktuell geöffnete E-Mail, als PDF, unter einem auswählbaren Ordner ablegen kann. Hinzu kommt, dass die Dateinamen mit dem aktuellen Datum versehen werden sollen. Ich habe das Internet jetzt schon eine ganze Weile nach Lösungen durchsucht und folgendes gefunden: Code: Sub Ablegen() Dim strPath As String Dim strText As String strPath = Environ("USERPROFILE") & "\Desktop\" If TypeOf Application.ActiveWindow Is Outlook.Explorer Then Set obj = Application.ActiveWindow Set obj = obj.Selection(1) Else Set objInspector = ActiveInspector objInspector.Activate If objInspector.IsWordMail Then Set obj = Application.ActiveInspector.CurrentItem End If End If With obj strText = Replace(.Subject, "/", "_") strText = Replace(strText, "!", "") strText = Replace(strText, ".", "_") strText = Replace(strText, "\", "_") strText = Replace(strText, ":", "_") strText = Replace(strText, "(", "") strText = Replace(strText, ")", "") strText = Replace(strText, """", "") .SaveAs strPath & strText & Format(.ReceivedTime, "(DD.MM.YYYY_hh-mm)") & ".msg", olMSG End With End Sub
Mit diesem Code ist es schonmal möglich, eine einzelne E-Mail als Outlook-Datei, über einen Button, abzulegen. Dabei wird gleichzeitig, das aktuelle Datum mit Uhrzeit in dem Dateinamen eingefügt. Allerdings muss ich den Speicherort vorher definieren, also ich kann ihn nicht per Auswahlfenster bestimmen und die Datei wird nicht als PDF, sondern Msg-Datei abgelegt. Deswegen frage ich nun hier im Forum mal nach ob eventuell jemand eine Idee hat, wie man das ganze entsprechend meinen Vorstellungen anpassen könnte. Ich würde mich riesig über eine Antwort freuen! MfG Lukas
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Lukas, ich habe das bei mir so: Code: Option Explicit
Sub test() Dim StrSavePath As String StrSavePath = BrowseForFolder End Sub Function BrowseForFolder(Optional OpenAt As String) As String Dim ShellApp As Object Set ShellApp = CreateObject("Shell.Application"). _ BrowseForFolder(0, "Please choose a folder", 0, OpenAt) On Error Resume Next BrowseForFolder = ShellApp.self.Path On Error GoTo 0 Select Case Mid(BrowseForFolder, 2, 1) Case Is = ":" If Left(BrowseForFolder, 1) = ":" Then BrowseForFolder = "" End If Case Is = "\" If Not Left(BrowseForFolder, 1) = "\" Then BrowseForFolder = "" End If Case Else BrowseForFolder = "" End Select ExitFunction: Set ShellApp = Nothing End Function
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 19.09.2017
Version(en): 2016
Hallo André, danke für deine Antwort! Ich habe jetzt mal probiert die Funktion in meinen Code einzubauen. Allerdings hat dies nicht geklappt. Kannst nochmal schauen ob ich irgendetwas falsch gemacht habe, ich bin absolut kein Profi. Code: Sub Einzeln() Dim StrSavePath As String StrSavePath = BrowseForFolder If TypeOf Application.ActiveWindow Is Outlook.Explorer Then Set obj = Application.ActiveWindow Set obj = obj.Selection(1) Else Set objInspector = ActiveInspector objInspector.Activate If objInspector.IsWordMail Then Set obj = Application.ActiveInspector.CurrentItem End If End If With obj strText = Replace(.Subject, "/", "_") strText = Replace(strText, "!", "") strText = Replace(strText, ".", "_") strText = Replace(strText, "\", "_") strText = Replace(strText, ":", "_") strText = Replace(strText, "(", "") strText = Replace(strText, ")", "") strText = Replace(strText, """", "") .SaveAs strPath & strText & Format(.ReceivedTime, "(DD.MM.YYYY_hh-mm)") & ".msg", olMSG End With
End Sub
Function BrowseForFolder(Optional OpenAt As String) As String Dim ShellApp As Object Set ShellApp = CreateObject("Shell.Application"). _ BrowseForFolder(0, "Please choose a folder", 0, OpenAt) On Error Resume Next BrowseForFolder = ShellApp.self.Path On Error GoTo 0 Select Case Mid(BrowseForFolder, 2, 1) Case Is = ":" If Left(BrowseForFolder, 1) = ":" Then BrowseForFolder = "" End If Case Is = "\" If Not Left(BrowseForFolder, 1) = "\" Then BrowseForFolder = "" End If Case Else BrowseForFolder = "" End Select ExitFunction: Set ShellApp = Nothing End Function
Gruß Lukas
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Lukas,
du hast unten beim Speichern strSave, müsste auch strSavePath sein ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 19.09.2017
Version(en): 2016
(26.10.2018, 19:07)schauan schrieb: Hallo Lukas,
du hast unten beim Speichern strSave, müsste auch strSavePath sein ... Hallo André, das ist mir garnicht aufgefallen mit dem strSavePath  Ich habe den Code nun folgendermaßen abgeändert: Code: Sub Einzeln() Dim strSavePath As String Dim strText As String strSavePath = BrowseForFolder If TypeOf Application.ActiveWindow Is Outlook.Explorer Then Set obj = Application.ActiveWindow Set obj = obj.Selection(1) Else Set objInspector = ActiveInspector objInspector.Activate If objInspector.IsWordMail Then Set obj = Application.ActiveInspector.CurrentItem End If End If With obj strText = Replace(.Subject, "/", "_") strText = Replace(strText, "!", "") strText = Replace(strText, ".", "_") strText = Replace(strText, "\", "_") strText = Replace(strText, ":", "_") strText = Replace(strText, "(", "") strText = Replace(strText, ")", "") strText = Replace(strText, """", "") .SaveAs strSavePath & strText & Format(.ReceivedTime, "(DD.MM.YYYY_hh-mm)") & ".msg", olMSG End With End Sub
Allerdings funktioniert es so noch nicht. Es wird keine Datei in meinem ausgewählten Ordner abgelegt. Es kommt auch keine Fehlermeldung, irgendwas ist da noch unklar, ich weiß nur nicht was. Hast du eine Idee wo das herkommen könnte? Gruß Lukas
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Lukas,
dann erst mal die Frage - hat es denn vor der Änderung mit der Erweiterung zur Ordnerauswahl funktioniert?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 19.09.2017
Version(en): 2016
Entschuldige das ich das nicht erwähnt habe. Mit diesem Code hat es vorher einwandfrei funktioniert! Code: Sub test() Dim strPath As String Dim strText As String strPath = Environ("USERPROFILE") & "\Desktop\" If TypeOf Application.ActiveWindow Is Outlook.Explorer Then Set obj = Application.ActiveWindow Set obj = obj.Selection(1) Else Set objInspector = ActiveInspector objInspector.Activate If objInspector.IsWordMail Then Set obj = Application.ActiveInspector.CurrentItem End If End If With obj strText = Replace(.Subject, "/", "_") strText = Replace(strText, "!", "") strText = Replace(strText, ".", "_") strText = Replace(strText, "\", "_") strText = Replace(strText, ":", "_") strText = Replace(strText, "(", "") strText = Replace(strText, ")", "") strText = Replace(strText, """", "") .SaveAs strPath & strText & Format(.ReceivedTime, "(DD.MM.YYYY_hh-mm)") & ".msg", olMSG End With End Sub
Nun klappt es aber mit folgender erweiterung nicht: Code: Sub test() Dim strSavePath As String Dim strText As String strSavePath = BrowseForFolder If TypeOf Application.ActiveWindow Is Outlook.Explorer Then Set obj = Application.ActiveWindow Set obj = obj.Selection(1) Else Set objInspector = ActiveInspector objInspector.Activate If objInspector.IsWordMail Then Set obj = Application.ActiveInspector.CurrentItem End If End If With obj strText = Replace(.Subject, "/", "_") strText = Replace(strText, "!", "") strText = Replace(strText, ".", "_") strText = Replace(strText, "\", "_") strText = Replace(strText, ":", "_") strText = Replace(strText, "(", "") strText = Replace(strText, ")", "") strText = Replace(strText, """", "") .SaveAs strSavePath & strText & Format(.ReceivedTime, "(DD.MM.YYYY_hh-mm)") & ".msg", olMSG End With End Sub
Natürlich hängt hinten noch die Function dran ;) Gruß Lukas
Registriert seit: 19.09.2017
Version(en): 2016
Hallo, ich habe nun nochmal etwas rumprobiert und nun den Fehler nun gefunden. Bei BrowseForFolder = ShellApp.self.Path hat [ & "\" ] gefehlt, nun funktioniert es bestens! Code: Function BrowseForFolder(Optional OpenAt As String) As String Dim ShellApp As Object Set ShellApp = CreateObject("Shell.Application"). _ BrowseForFolder(0, "Please choose a folder", 0, OpenAt) On Error Resume Next BrowseForFolder = ShellApp.self.Path & "\" On Error GoTo 0 Select Case Mid(BrowseForFolder, 2, 1) Case Is = ":" If Left(BrowseForFolder, 1) = ":" Then BrowseForFolder = "" End If Case Is = "\" If Not Left(BrowseForFolder, 1) = "\" Then BrowseForFolder = "" End If Case Else BrowseForFolder = "" End Select ExitFunction: Set ShellApp = Nothing End Function
Es gibt allerdings noch ein weiteres Problem. Mit einem anderen Button möchte ich alle Emails in einem Ordner, also beispielsweiße Papierkorb, ablegen. Momentan funktioniert es nur wenn ich zuvor alle Emails makerie. Das ist aber erstmal nicht das größte Problem. Das größte Problem ist, dass sich Outlook meinstens aufhängt wenn sehr viele Emails abgelegt werden sollen. Ist es möglich die Emails irgendwie nach und nach ab zu speichern, damit genau das nicht mehr passiert? Gruß Lukas
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Lukas, im Prinzip geht das so. Auf jeden Fall erst mal mit einem Testordner probieren und schrittweise ausführen! Code: Sub Items_loeschen() 'Variablendeklarationen Dim olMapiFolder As olMapiFolderlook.MAPIFolder Dim objItem As Object Dim iCnt As Integer 'Ordnerobject setzen Set olMapiFolder = GetObject("", "olMapiFolderlook.Application").GetNamespace("Mapi"). _ GetDefaultFolder(olFolderInbox).Folders("Test") 'Schleife ueber alle Elemente des Ordners For iCnt = olMapiFolder.objItems.Count To 1 Step -1 'Element loeschen olMapiFolder.objItems(iCnt).Delete 'Ende Schleife ueber alle Elemente des Ordners Next End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 19.09.2017
Version(en): 2016
Hallo André,
ich habe deinen Code mal ausprobiert und es tritt dabei ein Fehler auf. Als Fehler wird mir bei ,,olMapiFolder As olMapiFolderlook.MAPIFolder", Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert, ausgegeben.
Hast du eine Idee waran dies liegen könnte?
Gruß Lukas
|