Сохранение свойств автоматического архивирования папки в хранилище решения
В этом разделе показано решение, которое сохраняет свои личные данные в нескольких свойствах автоматического архивирования MAPI. Решение сохраняет эти свойства в объекте StorageItem папки, к которой применяются свойства автоматического архивирования. Объекты StorageItem хранятся в виде скрытых данных в связанной части папки, а так как решения могут при необходимости шифровать свои данные, они обеспечивают конфиденциальность, требуемую для данных решения. Так как свойства автоматического архивирования MAPI не предоставляются как явные встроенные свойства в объектной модели Outlook, решение использует PropertyAccessor в объекте StorageItem для задания этих свойств.
Ниже показана процедура.
- Функция
ChangeAgingProperties
принимает в качестве входных параметров следующее:
oFolder
— это объект Folder , к которому применяются свойства старения и где хранятся их значения.AgeFolder
указывает, следует ли архивировать или удалять элементы в указанной папке.DeleteItems
указывает, следует ли удалять вместо архива элементы, которые старше периода старения.FileName ' указывает конкретный файл для архивации устаревших элементов. Если это пустая строка, будет использоваться архивный файл по умолчанию archive.pst.
Granularity
указывает единицу времени для старения, независимо от того, будет ли архивирование вычисляться в единицах месяцев, недель или дней.Period
указывает время в заданной степени детализации.Granularity
Вместе значения иPeriod
указывают период старения. Элементы в указанной папке старше этого периода выдержки должны архивироваться или удаляться, как указано. Например,Granularity
значения 2 иPeriod
14 указывают период старения в 14 дней, когда элементы в указанной папке старше 14 дней должны быть либо архивироваться, либо удаляться, как указано.Default
Указывает, для каких параметров следует задать значение по умолчанию. Возможные значения: 0, 1 и 3:0 указывает, что ни в чем не предполагается значение по умолчанию.
1 указывает, что только расположение файла принимает значение по умолчанию. Это то же самое, что установить флажок Заархивировать эту папку с помощью этих параметров и Переместить старые элементы в архивную папку по умолчанию на вкладке Автоархивация диалогового окна Свойства папки.
3 указывает, что все параметры предполагают значение по умолчанию. Это аналогично проверке архивных элементов в этой папке с помощью параметров по умолчанию на вкладке Автоархивация диалогового окна Свойства папки.
Проверяется допустимость параметров.
Если параметры допустимы, folder.GetStorage используется для создания или получения существующего объекта StorageItem с классом сообщения , IPC.MS. Outlook.AgingProperties.
Затем PropertyAccessor используется для задания свойств автоматического архивирования в StorageItem, StorageItem.Save используется для сохранения изменений в StorageItem.
Процедура
TestAgingProps
задает параметры автоматического архивирования для свойств устаревания текущей папки, чтобы элементы старше шести месяцев перемещались в архивный файл по умолчанию.
Замечания
Поместите код во встроенный модуль ThisOutlookSession .
Выполните процедуру
TestAgingProps
, чтобы задать свойства старения в текущей папке в активном проводнике.
Примечание Независимо от того, реализовано ли оно как макрос VBA или надстройка COM, решение является доверенным вызывающим и, следовательно, может получить доступ к PropertyAccessor. Чтобы улучшить этот пример, заключите следующий код VBA в класс .NET для улучшения перехвата ошибок и перечисления для детализации.
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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.