VB Outlook 2003_Archiv-Ordnerstruktur kopieren, neu einfügen, Elemente aus Ordneren leeren

  • Sonstige

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Ramona.

    VB Outlook 2003_Archiv-Ordnerstruktur kopieren, neu einfügen, Elemente aus Ordneren leeren

    Hallo,

    ich bin in diesem VB-Forum neu...und brauche ganz dringend Eure Hilfe....Ich habe jedes Jahr das Problem, dass ich unmengen an Archivordnern anlegen muss, die gleich dem Jahr zuvor sind.

    Aufgabe:
    ich möchte meine Archiv-Ordnerstruktur 1:1 als neues Archiv übernehmen können, jedoch soll die Kopie alle Ordneren (mit den ganzen Unterordnern) enthalten, aber die Elemente sind geleert
    oder
    alternativ in dem neuen Archiv nur die Ordner angelegt werden, die in dem alten Archiv auch Elemente enthalten waren. Jedoch soll am alten Archiv nichts gelöscht bzw. geändert werden.

    Beispiel:
    wenn es eine Ordnerstruktur gibt

    Ordner0
    -Ordner0_1
    --Ordner0_1_1
    --Ordner0_1_2
    Ordner1
    -Ordner1_1
    -Ordner1_2
    .....

    und in Ordner0, Ordner1 und Ordner1_2 selbst keine Mails enthalten sind müßte dann in dem neuen Archiv die Struktur so aussehen:

    Ordner1
    -Ordner1_1

    Ordner1 müßte angelegt sein, da ja unterhalb der Ordner1_1 Emails enthalten hatte und somit auch in dem neuen Archiv vorhanden sein soll. Die Struktur nach oben soll erhalten bleiben, deshalb muß auch weiterhin
    Ordner1 angelegt sein. Ordner0 wird nicht gebraucht, da dort ja keine Mails enthalten waren.

    ?( Könntet Ihr mir da bitte weiterhelfen? Ich habe in VB geringe Kenntnisse, würde aber sehr gerne so einen Makros, zur Arbeitserleichterung, haben. Würde mich unendlich freuen, wenn Ihr mir da weiterhelfen könnt....

    VG
    Ramona
    Eine Verzeichnisstruktur kannst Du in etwa so kopieren. Falls Du anderen Namen (z.B. mit Index) verwenden willst, musst Du sie natürlich anpassen.

    Visual Basic-Quellcode

    1. Private Sub CopyFolderStructure(ByVal sourceFolder As Outlook.folder, ByVal targetFolder As Outlook.folder, ByVal copyAllSubFolders As Boolean)
    2. Dim folder, sourceSubfolder, targetSubFolder As Outlook.folder
    3. For Each sourceSubfolder In sourceFolder.Folders ' Alle Unterordner im Quellordner durchlaufen
    4. Set targetSubFolder = Nothing ' Gesuchter Unterordner im Zielordner zurücksetzen
    5. For Each folder In targetFolder.Folders ' Alle Unterordner im Zielordner durchlaufen und Name vergleichen
    6. If folder.Name = sourceSubfolder.Name Then ' gefunden
    7. Set targetSubFolder = folder
    8. Exit For
    9. End If
    10. Next
    11. If targetSubFolder Is Nothing Then
    12. ' nicht vorhanden -> erstellen
    13. Set targetSubFolder = targetFolder.Folders.Add(sourceSubfolder.Name)
    14. Else
    15. ' bereits vorhanden -> nichts tun
    16. End If
    17. ' aktueller Unterordnet aktivieren
    18. Set Outlook.ActiveExplorer.currentFolder = targetSubFolder
    19. If copyAllSubFolders Then
    20. Call CopyFolderStructure(sourceSubfolder, targetSubFolder, copyAllSubFolders)
    21. End If
    22. Next
    23. End Sub
    @ Snaptu: genau das ist ja das Problem... nicht alle Ordner sind leer. Die Ordnerstruktur (Ordner0) enthält mehrere Unterodner (Ordner0_1,...), die wiederrum auch Unterordner (Ordner0_1_1,...),.... enthalten. In der neuen Ordnerstruktur sollen nur die Unterodner Kopiert werden, wenn sich eine Datei in den Unterordnern befindet. Wenn sich in den gesamten Unterordnern keine Datei befindet, sollen die kompletten Unterodnern nicht in die neue Ordnerstruktur kopiert werden.

    Ordner0
    -Ordner0_1
    --Ordner0_1_1
    --Ordner0_1_2 (hier befindet sich z. B. eine Datei, dann soll die ganze Struktur kopiert werden, jedoch soll der Inhalt nach der Odnerstrukturübernahme geleert werden!
    Übernommen werden soll nur die leere Ordnerstrucktur ohne Inhalt...)

    Ordner1
    -Ordner1_1
    -Ordner1_2 (bis hierhin befindet sich keine Datei, dann soll diese komplette Struktur nicht in der neuen Ordnerstruktur kopiert werden)

    Ordner2
    -Ordner2_1
    --Ordner2_1_1
    --Ordner2_1_2 (siehe bei den Überordner Ordner0....)
    :
    :
    :

    @ xtts02: vielen lieben Dank für den hilfreichen Quellcode! Nun kann ich zumindest die komplette Ordnerstuktur kopieren... :thumbsup:
    Wäre es denoch möglich, den Code so zu erweitern, dass wenn die Ordnerstruktur (wie oben bereits beschrieben) erst überprüft wird, ob irgend ein Unterodner einen Inhalt (.doc, .ppt, .msg,...) beinhaltet?
    Falls ja, dann erst soll nur die Ordnerstruktur übernommen werden, jedoch ohne den Inhalt.
    Falls nicht, dann soll die Ordnerstruktur nicht übernommen werden, sondern zum Nächsten Überordner übergehen, und da erneut überprüfen, ob sich irgend ein Inhalt sich im Unterodnern befindet.... LGRamona

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ramona“ ()

    @ xtts02: also das sind im MS Outlook die Archivordner...



    hier hat ja der Outlook Archivordner mehrere Unterordner-Ebenen
    Archiv 2010 (Ordner0)
    CLM (Ordner0_1)
    Efiport (Ordner0_2)
    Heiss (Ordner0_3)
    Hr. Steimle (Ordner0_4)
    gesendet (Ordner0_4_1)
    IHK (Ordner0_4_2) usw

    so, wenn sich eine Mail oder irgend einen Inhalt im Ordner0_4_2 sich befindet, dann soll die komplette Struktur (jedoch leer) für die neue Archivierungsstruktur übernommen werden. Wenn sich kein Inhalt bis zum untersten Unterordner befindet, sollen die Ornder nicht für die neue Archivierungsstruktur übernommen werden... soll halt nur bis dahin übernommen werden, bis es in den Unterordnern einen Inhalt findet.

    Aber das Problem ist, wenn es in einem Unterodner wie bps. Ornder0_4 keinen Inhalt befindet, jedoch im Ornder0_4_1 doch einen Inhalt existiert, dann soll die Ordnerstruktur bishin zum Ordner0_4_1 kopiert werden....

    :wacko: hoffe dass es einigermassen verständlich ist...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Ramona“ ()