Speichern der Eigenschaften des automatischen Archivs eines Ordners im Lösungsspeicher
Dieses Thema zeigt eine Lösung, die die privaten Daten in einigen eigenschaften der automatischen MAPI-Archivierung speichert. Die Lösung speichert diese Eigenschaften in einem StorageItem-Objekt des Ordners, auf den die Eigenschaften für die automatische Archivierung angewendet werden. StorageItem-Objekte werden als ausgeblendete Daten im zugeordneten Teil eines Ordners gespeichert, und da Lösungen ihre Daten optional verschlüsseln können, bieten sie den von Lösungsdaten erforderlichen Datenschutz. Da die Eigenschaften der automatischen MAPI-Archivierung nicht als explizite integrierte Eigenschaften im Outlook-Objektmodell verfügbar gemacht werden, verwendet die Lösung propertyAccessor für das StorageItem-Objekt , um diese Eigenschaften festzulegen.
Im Folgenden wird das Verfahren veranschaulicht:
- Die
ChangeAgingProperties
Funktion akzeptiert Folgendes als Eingabeparameter:
oFolder
ist das Folder -Objekt, auf das die Alterungseigenschaften angewendet werden und in dem ihre Werte gespeichert sind.AgeFolder
gibt an, ob Elemente im Ordner wie angegeben archiviert oder gelöscht werden sollen.DeleteItems
gibt an, ob Elemente, die den Alterungszeitraum überschritten haben, gelöscht und nicht archiviert werden sollen.FileName' gibt eine bestimmte Datei zum Archivieren veralteter Elemente an. If this is an empty string, the default archive file, archive.pst, will be used.
Granularity
gibt die für die Alterung verwendete Zeiteinheit an, also ob die Archivierung in Monaten, Wochen oder Tagen berechnet werden soll.Period
indicates the amount of time in the given granularity. Together, theGranularity
andPeriod
values indicate an aging period. Items in the given folder older than this aging period are to be archived or deleted as specified. For example, aGranularity
of 2 andPeriod
of 14 specifies an aging period of 14 days, when items in the given folder older than 14 days should be either archived or deleted as specified.Default
indicates which settings should be set to the default. The possible values are 0, 1, and 3:0 indicates nothing assumes a default value.
1 indicates that only the file location assumes a default value. This is the same as checking Archive this folder using these settings and Move old items to default archive folder in the AutoArchive tab of the Properties dialog box for the folder.
3 indicates all settings assume a default value. This is the same as checking Archive items in this folder using default settings in the AutoArchive tab of the Properties dialog box for the folder.
Die Gültigkeit der Parameter wird überprüft.
Wenn die Parameter gültig sind, wird Folder.GetStorage verwendet, um ein vorhandenes StorageItem -Objekt mit der Nachrichtenklasse IPC.MS.Outlook.AgingProperties zu erstellen oder abzurufen.
Anschließend wird PropertyAccessor verwendet, um die AutoArchivierungseigenschaften für StorageItem festzulegen, während mithilfe von StorageItem.Save Änderungen an StorageItem gespeichert werden.
Die
TestAgingProps
Prozedur legt die Einstellungen für die automatische Archivierung für die Alterungseigenschaften des aktuellen Ordners fest, sodass Elemente, die älter als sechs Monate sind, in die Standardarchivdatei verschoben werden.
Hinweise
Platzieren Sie den Code im integrierten Modul ThisOutlookSession.
Führen Sie die
TestAgingProps
Prozedur aus, um alternde Eigenschaften für den aktuellen Ordner im aktiven Explorer festzulegen.
Anmerkung Unabhängig davon, ob sie als VBA-Makro oder COM-Add-In implementiert ist, ist die Lösung ein vertrauenswürdiger Aufrufer und kann daher auf propertyAccessor zugreifen. Um dieses Beispiel zu verbessern, umschließen Sie den folgenden VBA-Code in einer .NET-Klasse, um eine bessere Fehlerauffangung und -enumeration für granularität zu erstellen.
Function ChangeAgingProperties(oFolder As Outlook.Folder, _
AgeFolder As Boolean, DeleteItems As Boolean, _
FileName As String, Granularity As Integer, _
Period As Integer, Default As Integer) As Boolean
'6 MAPI properties for aging items in a folder
Const PR_AGING_AGE_FOLDER = _
"https://schemas.microsoft.com/mapi/proptag/0x6857000B"
Const PR_AGING_DELETE_ITEMS = _
"https://schemas.microsoft.com/mapi/proptag/0x6855000B"
Const PR_AGING_FILE_NAME_AFTER9 = _
"https://schemas.microsoft.com/mapi/proptag/0x6859001E"
Const PR_AGING_GRANULARITY = _
"https://schemas.microsoft.com/mapi/proptag/0x36EE0003"
Const PR_AGING_PERIOD = _
"https://schemas.microsoft.com/mapi/proptag/0x36EC0003"
Const PR_AGING_DEFAULT = _
"https://schemas.microsoft.com/mapi/proptag/0x685E0003"
Dim oStorage As StorageItem
Dim oPA As PropertyAccessor
' Valid Period:
' 1-999
'
' Valid Granularity:
' 0=Months, 1=Weeks, 2=Days
'
' Valid Default:
' 0=All settings don't use a default setting
' 1=Only the file location is defaulted
' "Archive this folder using these settings" and
' "Move old items to default archive folder" are checked
' 3=All settings are defaulted
' "Archive items in this folder using default settings" is checked
If (oFolder Is Nothing) Or _
(Granularity < 0 Or Granularity > 2) Or _
(Period < 1 Or Period > 999) Or _
(Default < 0 Or Default = 2 Or Default > 3) _
Then
ChangeAgingProperties = False
End If
On Error GoTo Aging_ErrTrap
'Create or get solution storage in given folder by message class
Set oStorage = oFolder.GetStorage( _
"IPC.MS.Outlook.AgingProperties", olIdentifyByMessageClass)
Set oPA = oStorage.PropertyAccessor
If Not (AgeFolder) Then
oPA.SetProperty PR_AGING_AGE_FOLDER, False
Else
'Set the 6 aging properties in the solution storage
oPA.SetProperty PR_AGING_AGE_FOLDER, True
oPA.SetProperty PR_AGING_GRANULARITY, Granularity
oPA.SetProperty PR_AGING_DELETE_ITEMS, DeleteItems
oPA.SetProperty PR_AGING_PERIOD, Period
If FileName <> "" Then
oPA.SetProperty PR_AGING_FILE_NAME_AFTER9, FileName
End If
oPA.SetProperty (PR_AGING_DEFAULT), Default
End If
'Save changes as hidden messages to the associated portion of the folder
oStorage.Save
ChangeAgingProperties = True
Exit Function
Aging_ErrTrap:
Debug.Print Err.Number, Err.Description
ChangeAgingProperties = False
End Function
Sub TestAgingProps()
Dim oFolder As Outlook.Folder
Set oFolder = Application.ActiveExplorer.CurrentFolder
If ChangeAgingProperties(oFolder, True, False, "", 0, 6, 1) Then
Debug.Print "ChangeAgingProperties OK"
Else
Debug.Print "ChangeAgingProperties Failed"
End If
End Sub
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.