Hallo
ich möchte in einem Otlook 2007 (angebunden an Exchange 2010) einen Ordner (hier:"test1") aus öffentliche Ordner in meinen privaten Kalender kopieren. Eine eventuell schon vorhandene Kopie soll gelöscht werden. Diese eigentlich überschaubare Aufgabe scheitert aber daran das ich den Ordner aus Gelöschte Elemente nicht löschen kann. Um es noch komplizierter zu machen funktionert der Code wenn ich ihn im Debugger per Einzelschritt durchlaufen lasse. Will ich das Makro ausführen erhalte ich immer die Meldung
ich möchte in einem Otlook 2007 (angebunden an Exchange 2010) einen Ordner (hier:"test1") aus öffentliche Ordner in meinen privaten Kalender kopieren. Eine eventuell schon vorhandene Kopie soll gelöscht werden. Diese eigentlich überschaubare Aufgabe scheitert aber daran das ich den Ordner aus Gelöschte Elemente nicht löschen kann. Um es noch komplizierter zu machen funktionert der Code wenn ich ihn im Debugger per Einzelschritt durchlaufen lasse. Will ich das Makro ausführen erhalte ich immer die Meldung
Und hier der durch Experimente etwas verunstaltete CodeLaufzeitfehler -2147352567 (80020009) Dieser Ordner kann nicht gelöscht werden. ... Wenden Sie sich an den Besitzer des Ordners oder den Administrator um ihre Berechtigung zu ändern.
Visual Basic-Quellcode
- Private Function GetFolder(ByVal strFolder As String) As Outlook.Folder
- On Error Resume Next
- Set GetFolder = Outlook.Session.Folders("Öffentliche Ordner")
- Set GetFolder = GetFolder.Folders("Alle Öffentlichen Ordner")
- Set GetFolder = GetFolder.Folders(strFolder)
- End Function
- Private Function GetCoppyFolder(ByVal strFolder As String) As Outlook.Folder
- Dim mytmpKalenderFolder As Outlook.Folder
- On Error Resume Next
- Set GetCoppyFolder = Outlook.Session.GetDefaultFolder(olFolderCalendar)
- Set mytmpKalenderFolder = GetCoppyFolder
- Set GetCoppyFolder = GetCoppyFolder.Folders(strFolder)
- If mytmpKalenderFolder.Name = GetCoppyFolder.Name Then
- Set GetCoppyFolder = Nothing
- End If
- End Function
- Private Function GetdeletedFolder(ByVal strFolder As String) As Outlook.Folder
- Dim mytmpKalenderFolder1 As Outlook.Folder
- On Error Resume Next
- Set GetdeletedFolder = Outlook.Session.GetDefaultFolder(olFolderDeletedItems)
- Set mytmpKalenderFolder1 = GetdeletedFolder
- Set GetdeletedFolder = GetdeletedFolder.Folders(strFolder)
- If mytmpKalenderFolder1.Name = GetdeletedFolder.Name Then
- Set GetdeletedFolder = Nothing
- End If
- End Function
- Private Function loeschenFolder(ByVal strFolder As String) As Boolean
- Dim geloeschtFolder As Outlook.Folder
- Set geloeschtFolder = GetdeletedFolder("test1")
- If Not geloeschtFolder Is Nothing Then
- geloeschtFolder.Delete
- loeschenFolder = True
- Else
- loeschenFolder = False
- End If
- End Function
- Sub CopyFolder()
- Dim myOlApp As New Outlook.Application
- Dim myNameSpace As Outlook.NameSpace
- Dim myKalenderFolder As Outlook.Folder
- Dim myoldKalenderFolder As Outlook.Folder
- Dim geloeschtFolder As Outlook.Folder
- Dim myPersKalenderFolder As Outlook.Folder
- Dim myNewFolder As Outlook.Folder
- Dim test As Boolean
- 'löschen des Kalenders aus "Kalender"
- Set myoldKalenderFolder = GetCoppyFolder("test1")
- If Not myoldKalenderFolder Is Nothing Then
- myoldKalenderFolder.Delete
- End If
- 'Kopieren des Kalenders
- Set myNameSpace = myOlApp.GetNamespace("MAPI")
- Set myKalenderFolder = Outlook.Session.GetDefaultFolder(olFolderCalendar)
- Set myPersKalenderFolder = GetFolder("test1")
- Set myNewFolder = myPersKalenderFolder.CopyTo(myKalenderFolder)
- test = loeschenFolder("test1")
- End Sub