Outlook: Emails mit Ordnerstruktur exportieren
Ich habe folgenden Code gefunden, um Emails aus Outlook auf die Festplatte zu exportieren und mit Datum & Betreff zu betiteln:
Link zu obigem Code
Bislang kann ich alle Emails eines Ordners markieren und über das Makro dann in einen Ordner exportieren, welcher frei wählbar ist. So weit so gut. Gibt es die Möglichkeit statt der Emails einen Ordner zu markieren und diesen dann samt Ordner, Unterordnern und kompletten Inhalten (Emails, Bilder, XLS, DOC, etc.) auf die Festplatte zu exportieren?
Gefunden habe ich noch folgenden Code, aber dieser kopiert die Ordnerstruktur nur innerhalb Outlook:
Kann ich diesen Code irgendwie umschreiben und beide zusammen verwenden? Oder ist das der falsche Ansatzpunkt?
Sub SaveSelectedMailsWithDate()
Dim mail As MailItem, strNewSubject As String, strNewFilePath As String, objFolder As Object, OUTPUTPATH As String
' max Anzahl an zu übernehmenden Zeichen des Subjects
Const MAXSUBJECTCHARS = 30
' Filesystem Object erstellen
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
' Ausgabeordner mit FolderBrowserDialog abfragen
Set objFolder = objShell.BrowseForFolder(0, "Ausgabe-Ordner angeben", &H10)
' prüfe auf gültigen Pfad
If fso.FolderExists(objFolder.Self.path) Then
OUTPUTPATH = objFolder.Self.path
Else
MsgBox "Ungültiger Pfad!", vbExclamation
Exit Sub
End If
With ActiveExplorer
' wenn eine Auswahl besteht ...
If .Selection.Count > 0 Then
' verarbeite alle markierten Mails
For Each obj In .Selection
If obj.Class = olMail Then
Set mail = obj
' ersetze illegale Zeichen durch underscores
strNewSubject = Trim(ReplaceIllegalChars(mail.SUBJECT))
' wenn das Subject durch die Änderung leer istm benutze als Namen der Datei die eindeutige Outlook-EntryID
If strNewSubject = "" Then
strNewSubject = mail.EntryID
End If
' kürze den Betreff wenn die definierte maximale Zeichenanzahl erreicht ist
If Len(strNewSubject) > MAXSUBJECTCHARS Then
strNewSubject = Left(strNewSubject, MAXSUBJECTCHARS) & "..."
End If
' baue den neuen Pfad zusammen
strNewFilePath = fso.BuildPath(OUTPUTPATH, Format(mail.ReceivedTime, "yymmdd") & "_" & strNewSubject & ".msg")
' sollte der Name bereits im Ausgabeordner existieren, hänge die Datum-Ticks als Randomizer an den Dateinamen an
While fso.FileExists(strNewFilePath)
ticks = DateDiff("s", #1/1/1970#, Now())
strNewFilePath = fso.BuildPath(OUTPUTPATH, Format(mail.ReceivedTime, "yymmdd") & "_" & strNewSubject & "_" & ticks & ".msg")
Wend
' speichere Mail als MSG(Unicode-Format)
mail.SaveAs strNewFilePath, olMSGUnicode
End If
Next
Else
' Keine Mail für den Export markiert
MsgBox "Bitte mindestens eine E-Mail für den Export markieren!", vbExclamation
End If
End With
MsgBox "Export abgeschlossen.", vbInformation
End Sub
' Illegale Pfadzeichen ersetzen
Function ReplaceIllegalChars(strText)
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "[\\/:?<>|""*]"
regex.Global = True
ReplaceIllegalChars = regex.Replace(strText, "_")
Set regex = Nothing
End Function
Link zu obigem Code
Bislang kann ich alle Emails eines Ordners markieren und über das Makro dann in einen Ordner exportieren, welcher frei wählbar ist. So weit so gut. Gibt es die Möglichkeit statt der Emails einen Ordner zu markieren und diesen dann samt Ordner, Unterordnern und kompletten Inhalten (Emails, Bilder, XLS, DOC, etc.) auf die Festplatte zu exportieren?
Gefunden habe ich noch folgenden Code, aber dieser kopiert die Ordnerstruktur nur innerhalb Outlook:
Public Sub CopyFolders()
Dim Source As Outlook.Folder
Dim Target As Outlook.Folder
'Quellordner wählen
Set Source = Application.Session.PickFolder
If Source Is Nothing Then Exit Sub
'Zielordner wählen
Set Target = Application.Session.PickFolder
If Target Is Nothing Then Exit Sub
LoopFolders Source.Folders, Target.Folders, True
MsgBox "fertig"
End Sub
Private Sub LoopFolders(SourceFolders As Outlook.Folders, _
TargetFolders As Outlook.Folders, _
ByVal Recursive As Boolean _
)
Dim Source As Outlook.MAPIFolder
Dim Target As Outlook.MAPIFolder
Dim FolderType As OlDefaultFolders
For Each Source In SourceFolders
Select Case Source.DefaultItemType
Case olAppointmentItem
FolderType = olFolderCalendar
Case olContactItem, olDistributionListItem
FolderType = olFolderContacts
Case olJournalItem
FolderType = olFolderJournal
Case olNoteItem
FolderType = olFolderNotes
Case olTaskItem
FolderType = olFolderTasks
Case Else
FolderType = olFolderInbox
End Select
Set Target = TargetFolders.Add(Source.Name, FolderType)
If Recursive Then
LoopFolders Source.Folders, Target.Folders, Recursive
End If
Next
End Sub
Kann ich diesen Code irgendwie umschreiben und beide zusammen verwenden? Oder ist das der falsche Ansatzpunkt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7803389501
Url: https://administrator.de/forum/outlook-emails-mit-ordnerstruktur-exportieren-7803389501.html
Ausgedruckt am: 05.04.2025 um 15:04 Uhr
9 Kommentare
Neuester Kommentar
Moin.
Cheers,
jsysde
Zitat von @svenyo:
[...]Gibt es die Möglichkeit statt der Emails einen Ordner zu markieren und diesen dann samt Ordner, Unterordnern und kompletten Inhalten (Emails, Bilder, XLS, DOC, etc.) auf die Festplatte zu exportieren?
Die Export-Funktion von Outlook tut doch genau das?[...]Gibt es die Möglichkeit statt der Emails einen Ordner zu markieren und diesen dann samt Ordner, Unterordnern und kompletten Inhalten (Emails, Bilder, XLS, DOC, etc.) auf die Festplatte zu exportieren?
Cheers,
jsysde
Moin.
Nein, dir ist nix entgangen - hast natürlich Recht, da wird ne PST-Datei draus. Bin ich wohl zu kurz gehüpft.
Cheers,
jsysde
Nein, dir ist nix entgangen - hast natürlich Recht, da wird ne PST-Datei draus. Bin ich wohl zu kurz gehüpft.
Cheers,
jsysde

Auch noch Ansprüche ...
Markierten Ordner bekommst du egal ob VBA oder AutoIt über das COM-Objekt jederzeit, , bisschen musst du schon noch selbst machen, RTFM:
https://learn.microsoft.com/en-us/office/vba/api/outlook.explorer.curren ...
Dann ne rekursive Funktion gebaut die die Ordner durchläuft.
https://codekabinett.com/rdumps.php?Lang=1&targetDoc=rekursion-vba-o ....
Wir liefern dir hier nur die Rezepte, denken musst du dann schon noch selbst, du musst es ja später auch selbst warten und interpretieren können, oder kopierst du dir immer alles in nur zusammen ohne es zu verstehen?
P s. Von Netiquette hältst du wohl auch nichts 👎
Na denn...🥱
Markierten Ordner bekommst du egal ob VBA oder AutoIt über das COM-Objekt jederzeit, , bisschen musst du schon noch selbst machen, RTFM:
https://learn.microsoft.com/en-us/office/vba/api/outlook.explorer.curren ...
Dann ne rekursive Funktion gebaut die die Ordner durchläuft.
https://codekabinett.com/rdumps.php?Lang=1&targetDoc=rekursion-vba-o ....
Wir liefern dir hier nur die Rezepte, denken musst du dann schon noch selbst, du musst es ja später auch selbst warten und interpretieren können, oder kopierst du dir immer alles in nur zusammen ohne es zu verstehen?
P s. Von Netiquette hältst du wohl auch nichts 👎
Na denn...🥱
Moin,
bei mangelnden Programmierkenntnissen ist das ggf. eine Alternative. Kaufen, installieren, einrichten - läuft:
autofiler
Legt auch Attachments separat ab.
Gruß
DivideByZero
bei mangelnden Programmierkenntnissen ist das ggf. eine Alternative. Kaufen, installieren, einrichten - läuft:
autofiler
Legt auch Attachments separat ab.
Gruß
DivideByZero