Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Umbenennen gespeicherter Mails (.msg)

Forumthread: Umbenennen gespeicherter Mails (.msg)

Umbenennen gespeicherter Mails (.msg)
04.06.2020 13:23:56
Christian
Hallo liebe VBA-Champions
Ich möchte alle in einem Verzeichnis abgespeicherten Mails (wenn möglich inkl. Unterverzeichnissen) umbenennen - mit Angabe von ReceivedTime, Sender, To und Subject.
Hab vieles im Archiv gefunden - aber zu meinem Problem passt nichts.
Vielen Dank für Eure Hilfe
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umbenennen gespeicherter Mails (.msg)
04.06.2020 13:30:45
Joachim
Hallo,
ich habe im Netz einen VBA-Code gefunden, der wunderbar funktioniert.
Suche mal nach "ExportEmail" und "Michael Wöhrer".
Gruß
AW: Umbenennen gespeicherter Mails (.msg)
04.06.2020 13:41:33
Christian
Hallo Joachim
vielen Dank, das habe ich schon entdeckt. Ich will die Mails aber nicht aus Outlook exportieren, sondern bereits gespeicherte umbenennen.
lg Christian
Anzeige
AW: Umbenennen gespeicherter Mails (.msg)
04.06.2020 14:20:52
MCO
Hallo!
Ich glaube nicht, dass du diese Dateiattribute aus den einfachen Eigenschaften extrahieren kannst. Da musst du sie schon wieder ins Outlook bringen.
Gruß, MCO
AW: Umbenennen gespeicherter Mails (.msg)
04.06.2020 14:32:48
Christian
Doch - man kann darauf zugreifen. Habe mir aus dem Forum diesen Code über Outlook-VBA zusammengestoppelt:
Sub test()
Dim myOlApp As New Outlook.Application
Dim myItem As Outlook.MailItem
Dim newname As String
Dim path As String
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
Const strReplaceSZ   As String = "_.;:_#äüö+?)=%$&(/\"
path = "I:\Mails\"
Set myItem = myOlApp.CreateItemFromTemplate(path & "hallo.msg")
newname = Format(myItem.ReceivedTime, "yyMMdd hhmmss") & " v " & myItem.SenderName & "  _
a " & myItem.To & " " & myItem.Subject
For lngVarSZ = 1 To Len(strReplaceSZ)
newname = Replace(newname, Mid(strReplaceSZ, lngVarSZ, 1), "")
Next lngVarSZ
newname = path & newname & ".msg"
Name path & myItem & ".msg" As newname
End Sub
Das geht aber nur für eine fixe Datei und nicht für alle in einem Verzeichnis. Ich bräuchte es aber für Mehrfachumbenennung.
lg
Anzeige
AW: Umbenennen gespeicherter Mails (.msg)
04.06.2020 17:04:54
Christian
.
AW: Umbenennen gespeicherter Mails (.msg)
05.06.2020 12:26:50
MCO
Hallo!
Dann muss nur ne Schleife über alle Dateien im Ordner eingebunden werden, oder?
Sub test()
Dim myOlApp As New Outlook.Application
Dim myItem As Outlook.MailItem
Dim newname As String
Dim path As String
Dim lngVarSZ         As Long
Dim strTxtSZ         As String
Const strReplaceSZ   As String = "_.;:_#äüö+?)=%$&(/\"
Dim Fso As Object
Dim SearchFolder As Object
path = "I:\Mails\"
Set Fso = CreateObject("Scripting.Filesystemobject")
Set SearchFolder = Fso.GetFolder(path)
For Each my_mail In SearchFolder.Files
Set myItem = myOlApp.CreateItemFromTemplate(EachFil)
newname = Format(myItem.ReceivedTime, "yyMMdd hhmmss") & " v " & myItem.SenderName & _
" a " & myItem.To & " " & myItem.Subject
For lngVarSZ = 1 To Len(strReplaceSZ)
newname = Replace(newname, Mid(strReplaceSZ, lngVarSZ, 1), "")
Next lngVarSZ
newname = path & newname & ".msg"
Name EachFil As newname
Next my_mail
End Sub
Gruß, MCO
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Mails im .msg-Format umbenennen: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

Um gespeicherte Mails im .msg-Format in einem Verzeichnis (inklusive Unterverzeichnissen) umzubenennen, kannst du folgenden VBA-Code verwenden. Dieser greift auf die Eigenschaften der Mails zu und benennt sie entsprechend um.

  1. Öffne Outlook und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu, indem du rechtsklickst und „Einfügen“ > „Modul“ wählst.
  3. Kopiere den folgenden Code in das Modul:
Sub RenameEmails()
    Dim myOlApp As New Outlook.Application
    Dim myItem As Outlook.MailItem
    Dim newname As String
    Dim path As String
    Dim lngVarSZ As Long
    Const strReplaceSZ As String = "_.;:_#äüö+?)=%$&/\"
    Dim Fso As Object
    Dim SearchFolder As Object

    path = "I:\Mails\" ' Pfad zu deinem Verzeichnis
    Set Fso = CreateObject("Scripting.Filesystemobject")
    Set SearchFolder = Fso.GetFolder(path)

    For Each EachFil In SearchFolder.Files
        Set myItem = myOlApp.CreateItemFromTemplate(EachFil)
        newname = Format(myItem.ReceivedTime, "yyMMdd hhmmss") & " v " & myItem.SenderName & " a " & myItem.To & " " & myItem.Subject

        For lngVarSZ = 1 To Len(strReplaceSZ)
            newname = Replace(newname, Mid(strReplaceSZ, lngVarSZ, 1), "")
        Next lngVarSZ

        newname = path & newname & ".msg"
        Name EachFil As newname
    Next EachFil
End Sub
  1. Passe den path-Wert auf das Verzeichnis an, in dem deine .msg-Dateien gespeichert sind.
  2. Schließe den Editor und führe das Makro über ALT + F8 aus.

Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“

    • Stelle sicher, dass der angegebene Pfad korrekt ist und die .msg-Dateien im Verzeichnis vorhanden sind.
  • Fehler: „Typkonflikt“

    • Dieser Fehler kann auftreten, wenn der Code versucht, mit einer Datei zu arbeiten, die kein Mail-Item ist. Stelle sicher, dass nur .msg-Dateien im Verzeichnis vorhanden sind.

Alternative Methoden

Eine alternative Methode wäre, die Mails direkt in Outlook zu exportieren und dort umzubenennen. Diese Vorgehensweise kann jedoch umständlicher sein, wenn du bereits gespeicherte .msg-Dateien hast. Eine andere Möglichkeit ist die Verwendung von Drittanbieter-Tools, die speziell für das Umbenennen von Mails im .msg-Format entwickelt wurden.


Praktische Beispiele

  • Beispiel 1: Umbenennen von Mails mit dem Betreff „Projektanfrage“

    • Setze den Code so ab, dass nur Mails mit einem bestimmten Betreff umbenannt werden.
  • Beispiel 2: Umbenennen nach Datum

    • Verwende das ReceivedTime-Attribut, um die Dateien nach Datum zu sortieren.

Tipps für Profis

  • Verwende Kommentare im Code, um den Überblick zu behalten.
  • Teste den Code zuerst in einem sicheren Verzeichnis, um versehentliches Überschreiben von wichtigen Dateien zu vermeiden.
  • Optimiere den Code, um die Leistung zu verbessern, wenn du mit vielen Mails arbeitest.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Dateiformate verwenden? Ja, jedoch musst du sicherstellen, dass der Dateityp unterstützt wird und die entsprechenden Eigenschaften verfügbar sind.

2. Was passiert, wenn eine Datei mit dem neuen Namen bereits existiert? Der Code wird einen Fehler auslösen, wenn du versuchst, eine Datei mit einem Namen zu erstellen, der bereits vorhanden ist. Du kannst eine Überprüfung einfügen, um dies zu vermeiden.

3. Funktioniert dieser Code in allen Outlook-Versionen? Der Code sollte in den meisten modernen Outlook-Versionen funktionieren, die VBA unterstützen. Prüfe jedoch die spezifischen Funktionen deiner Version.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige