Outlook Ordnerstruktur kopieren
Outlook Ordner kopieren, ganz einfach.
Wer kennt das nicht, jedes Jahr legt man e-mails ab bzw. sortiert man e-mails innerhalb von Outlook die sich das ganze Jahr angehäuft haben. Nach einer gewissen Zeit bildet sich somit auch eine große Ordnerstruktur.
Wie eine solche Ordnerstruktur auf einmal kopiert werden kann zeigt dieser Beitrag.
Die Ordnerstruktur vom letzen Jahr möchte man jetzt natürlich auch für das kommende Jahr übernehmen, jedoch sollen die Inhalte der Ordner nicht kopiert bzw. übernommen werden.
Lösungen gibt es hier wie Sand am Meer, von einer Archiv Datei erstellen, rüber, hinüber und zurück kopieren.
Hier eine relativ einfache Lösung um die Ordner mit Unterordner ohne Inhalt vom Vorjahr in einen neuen Ordner zu kopieren:
Dim olkSrcFolder As Outlook.MAPIFolder, _
olkDestFolder As Outlook.MAPIFolder
Sub DuplicateFolderStructure()
Dim strDestFolder As String
Set olkSrcFolder = Application.ActiveExplorer.CurrentFolder
strDestFolder = InputBox("Bitte den Namen des NEUEN Ordners eingeben.", "Ausgewählte Ordnerstruktur kopieren")
If strDestFolder <> "" Then
Session.GetDefaultFolder(olFolderInbox).Parent.Folders.Add (strDestFolder)
Set olkDestFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders(strDestFolder)
CreateFolder olkSrcFolder
End If
Set olkNewPST = Nothing
Set olkDestFolder = Nothing
Set olkSrcFolder = Nothing
MsgBox "Completed.", vbOKOnly + vbInformation, "Duplizieren der Ordner Struktur"
End Sub
Sub CreateFolder(olkFolder As Outlook.MAPIFolder)
Dim olkSubFolder As Outlook.MAPIFolder
olkDestFolder.Folders.Add (olkFolder)
Set olkDestFolder = olkDestFolder.Folders.Item(olkFolder.Name)
For Each olkSubFolder In olkFolder.Folders
CreateFolder olkSubFolder
Next
Set olkDestFolder = olkDestFolder.Parent
Set olkSubFolder = Nothing
End Sub
Natürlich gibt es jetzt mehrere Methoden den Code innerhalb von Outlook einzubinden, hier nun folgende Möglichkeit:
Den Code in einer Text Datei abspeichern und die Text Datei umbenennen von txt zu bas.
Innerhalb Outlook nun unter Datei >> Optionen >> „Menüband anpassen“ auf der rechten Seite die Entwicklertools freischalten, bzw. mit einem gesetzten Hacken aktivieren
und schon wir innerhalb Outlook ein Reiter mit den Entwicklertools freigeschaltet.
Links oben sollte nun „Visual Basic“ sichtbar sein, hier klicken und der Microsoft Visual Basic Editor öffnet sich.
Hier jetzt mit der rechten Maustaste auf Module klicken und im Kontext Menü „Datei importieren“ auswählen. Dann die zuvor gespeicherte bas Datei auswählen und schon ist der Code zum kopieren der Ordner importiert.
Wird Outlook jetzt geschlossen, wird man gefragt, ob das VBA-Projekt gespeichert werden soll.
Hier nun mit Ja bestätigen.
Möchte man nun z.B. die Ordnerstruktur des Vorjahres ins neue Jahr ohne Inhalt kopieren, einfach den Ordner der kopiert werden soll markieren, dann innerhalb Outlook auf den Reiter Entwicklertools klicken und das Listenfeld Makros anklicken. Hier sollte jetzt das vorher importierte Makro sichtbar sein.
Sollte bei aufrufen des Makros folgende Fehlermeldung erscheinen:
„Die Makros in diesem Projekt sind deaktiviert……..“
Dann muss noch in den „Outlook Optionen“ innerhalb des „Sicherheitscenters“ die „Makrosicherheit“ aktiviert werden und Outlook neu gestartet werden.
Wird jetzt das Makro ausgeführt, frägt das Makro nach, wie der neu zu erstellende Ordner benannt werden soll, hier einfach einen Namen eingeben, der bisher in der Ordnerstruktur nicht vorhanden ist, z.B. „111111“, danach wird der komplette Ordner des Jahres der markiert wurde in den Ordner „111111“ kopiert.
Wird nun der Ordner „111111“ geöffnet befindet sich in diesem die gesamte Ordnerstruktur des vorher markierten Ordners, hier die Jahreszahl umbenennen und den umbenannten Ordner ins oberste Verzeichnis kopieren bzw. verschieben.
Fertig.
Nachtrag:
Natürlich kann es vorkommen, dass aus Sicherheitsgründen in Unternehmen die Makro Funktion von der IT bzw. Administration deaktiviert wurde. In so einem Fall einfach dann den Support des Unternehmens kontaktieren, die können bestimmt für kurze Zeit die Makro Funktion aktivieren.
schade nur, daß das Makro schon hier mit einer Syntaxfehlermeldung abbricht
If strDestFolder <> „“ Then
Da hat sich beim abspeichern ein Fehler eingeschlichen.
Jetzt geht’s.
hallo
wo wird die datei gespeichert. ich aknn sie nicht finden.
martin
Hallo Martin,
ich vermute mal, dass du meinst die Datei die den Code enthält. Wie ich schon geschrieben habe, den Code in eine Textdatei schreiben und die Datei dann mit der Endung .bas abspeichern. Dann kann die Datei wie schon beschrieben innerhalb Outlook importiert werden. Das ganze wird dann in der Datei die alle Makros beinhaltet, also in der „VbaProject.OTM“ unter dem Pfad „AppData\Roaming\Microsoft\Outlook“ automatisch abgespeichert.
Gruß
Computerfuzzy
Hallo,
ich habe das Makro in Outlook 2010 eingebunden und beim ausführen erhalte ich die Fehlermeldung:
Fehler beim Kompilieren:
Mehrdeutiger Name: Create Folder
Mache ich was falsch? Danke für Hilfe.
Christoph
Hi Christoph,
du hast nichts falsch gemacht, der Fehler war richtig. Habe den Fehler nochmal korrigiert.
Jetzt sollte es funktionieren.
Klappt… Danke Danke
Die erstellte Ordnerstruktur wird bei mir mit bestimmten Freigaben erzeugt. Gibt es irgendeinen Weg die Ordnungsstruktur ohne diese neu entstanden Berechtigungen zu erzeugen?
Hallo Nils,
bei der kopiererei werden nur die Standard Rechte übernommen und auch keine angelegt. Freigegebene Ordner werden also somit nicht übernommen, Freigaben müssen also somit neu gesetzt werden.
Also bei mir ist es so, dass ich Ordner ohne speziellen Freigaben habe, diese dupliziere ich mit Hilfe des Makros und die daraus erzeugten Ordner haben dann neu hinzugefügte Freigaben bzw. Berechtigungen. In meinem Beispiel werden zusätzliche Berechtigungen für Anonym und Administrator erzeugt.
Man sieht es auf Anhieb an dem „Freigaben-Hand“-Symbol der neu erzeugten Ordner, welches Windows für freigegebene Ordner verwendet. Das irritiert mich etwas.
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken 🙂
Hallo Nils,
dass könnte evtl. an deiner Exchange Umgebung liegen, wenn hier neu erzeugte Ordner automatisch freigegeben werden.
Moin Moin,
der Code funktionert einwandfrei bei mir. Nun möchte ich ihn auf meinem Firmenrechner nutzen, da ich eine gewisse Ordnerstruktur immer und immer wieder neu anlegen muss – Oberordner ist immer ein Ordner mit einem Städtenamen und darunter befinden sich 12 Unterordner.
Wenn ich nun einen Städteordner markiere, das Makro ausführe und den Städtnamen für den neuen Ordner anlege, so wird immer eine zusätzliche Ebene hinzugefügt. Bsp: Ich habe einen Ordner mit den Namen ‚Hintertupfingen‘ den ich markiere. Ich führe das Makro aus und nenne den neuen Ordner ‚Hamburg‘. Was dann passiert ist, dass der Oberordner ‚Hamburg‘ heißt, die zweite Ebene ‚Hintertupfingen‘ und dann kommen erst die 12 Unterordner.
Mache ich irgendwas falsch oder müsste ich etwas an dem Code ändern? Wenn du einen Hinweis hast, dann reicht mir dies und ich versuche mich in die Sache einzulesen – VBA’s in Excel kriege ich mittlerweile auch hin (mehr schlecht als recht, aber es klappt).
Überdies noch eine weitere Frage zur generellen Machbarkeit. Ich habe auf der Arbeit ein eigenes Postfach und ein Postfach, welches ich mit mehreren Kollegen nutze. Den duplizierten Ordner benötige ich in dem Gemeinschaftspostfach. Wenn ich in diesem die Ordnerstruktur markiere und das Makro ausführe, so wird der neue Ordner immer in meinem persönlichen Ordner angelegt. Wie kann ich dies ändern?
Auch hier reicht mir ein kleiner Hinweis und ich fuchse mich rein in die ganze Sache.
Sry, dass meine Frage zu lang ausgefallen ist. Ich wünsche einen schönen Tag.
Christoph
Hallo Christoph,
wenn Du den Ordner „Hintertupfingen“ markierst und dann das Script ausführst wirst Du nach dem neuen Ordnernamen gefragt, hier vergibst Du dann einen neuen Namen wie im Beitrag geschrieben z.B. „111111“. Danach wird dein Ordner „Hintertupfingen“ in den Ordner „111111“ samt Ordnerstruktur kopiert. Danach kannst du ja den kopierten Ordner „Hintertupfingen“ umbenennen und dahin verschieben wo Du ihn brauchst.
Zu Deiner zweiten Frage: Du mußt einfach den Ordner der kopiert werden soll markieren, egal wo dieser liegt, Postfach oder in einer pst Datei. Die kopierte Ordnerstruktur ist dann immer in deinem Postfach im Ordner, also z.B. „222222“ samt Unterordner zu finden.
Hoffe du kannst das nachvollziehen.