Dat moet volgens mij wel mogelijk zijn via VBS, helaas is de API om deze settings aan te passen niet echt geweldig gedocumenteerd.
Ik heb wel een
programmeervoorbeeld in VBA gevonden om de autoarchive settings aan te passen. In principe is PR_AGING_DEFAULT de enige settings die voor jou van belang is. De waarde 3 voor deze setting komt overeen met default autoarchive locatie. Ik heb er zelf even mee zitten spelen maar kreeg het idee dat de code niet helemaal lekker werkt omdat deze instelling alleen goed over wordt genomen als de rest van de settings voor de folder ook over wordt genomen. Vandaar de code als volgt aangepast:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| 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
Dim oStorage As StorageItem
Dim oPA As PropertyAccessor
Debug.Print "Updating " + oFolder.Name
'Valid Period 1-999
'Valid Granularity 0=Months, 1=Weeks, 2=Days
If (oFolder Is Nothing) Or _
(Granularity < 0 Or Granularity > 2) Or _
(Period < 1 Or Period > 999) 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
oPA.SetProperty strPR_AGING_DEFAULT, Default
If Not (AgeFolder) And Default = 0 Then
oPA.SetProperty strPR_AGING_AGE_FOLDER, False
Else
'Set the 5 aging properties in the solution storage
oPA.SetProperty strPR_AGING_AGE_FOLDER, True
oPA.SetProperty strPR_AGING_GRANULARITY, Granularity
oPA.SetProperty strPR_AGING_DELETE_ITEMS, DeleteItems
oPA.SetProperty strPR_AGING_PERIOD, Period
If FileName <> "" Then
oPA.SetProperty strPR_AGING_FILE_NAME_AFTER9, FileName
End If
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 |
Verder UpdateFolderTreeArchiveSettings aangepast om de settings van de InBox over te nemen en deze op alle folders (ook die niet onder de InBox) over te nemen. Je moet zelf maar bepalen of dat inderdaad de bedoeling is of dat je alleen de instellingen van de folders onder de InBox wilt overschrijven.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| Sub UpdateFolderTreeArchiveSettings(o As outlook.Application)
Dim ns As Namespace
Dim oRootFolder As Folder
Dim oDefaultFolder As Folder
Dim AgeFolder As Boolean, DeleteItems As Boolean, _
FileName As String, Granularity As Integer, _
Period As Integer, Default As Integer
Set ns = o.GetNamespace("MAPI")
'Set oRootFolder = ns.PickFolder
Set oDefaultFolder = ns.GetDefaultFolder(outlook.olFolderInbox) ' Get default settings from InBox
Dim getCurrent As Boolean
getCurrent = GetCurrentAgingProperties(oDefaultFolder, AgeFolder, DeleteItems, FileName, Granularity, Period, Default)
If getCurrent Then
Set oRootFolder = ns.GetDefaultFolder(olFolderInbox).Parent ' Use parent to get to root of pst
RecursivelyApplyChanges oRootFolder, AgeFolder, DeleteItems, FileName, Granularity, Period, Default
End If
End Sub |
Tevens nog een
VBS voorbeeld gevonden. Het probleem dat daarin omschreven wordt trad bij mij in eerste instantie ook op maar later kon ik het niet meer reproduceren.
Ik denk in ieder geval dat dit je wel een aardig eind op weg moet helpen.