Как мне написать макрос, чтобы установить все свойства папки, чтобы "видеть все элементы"? У меня есть сотни папок и подпапок, и мне нужно настроить папки, чтобы видеть все элементы, и я не могу понять, как написать макрос. Наконец решил, что мне нужна помощь. Это должна быть настройка в outlook, аналогичная настройкам архива по умолчанию.
2 ответа
Ваша просьба научить вас писать макросы может быть слишком общей. Таким образом, вместо этого есть ответ о том, как развернуть все папки.
http://www.msoutlook.info/question/595 и
http://vboffice.net/sample.html?lang=en&mnu=2&smp=57&cmd=showitem
Вы можете решить расширить все папки, когда это необязательно при запуске.
«Этот образец открывает все дерево при запуске, и это зрелище...
В процедуре ExpandAllFolders есть переменная ExpandDefaultStoreOnly. При текущем значении (True) раскрывается только Личная папка. Если вы хотите расширить все доступные почтовые ящики (архивы, Exchange), тогда установите переменную = False. "
http://vboffice.net/sample.html?lang=en&mnu=2&smp=57&cmd=showitem
Private Sub Application_Startup()
ExpandAllFolders
End Sub
Private Sub ExpandAllFolders()
On Error Resume Next
Dim Ns As Outlook.NameSpace
Dim Folders As Outlook.Folders
Dim CurrF As Outlook.MAPIFolder
Dim F As Outlook.MAPIFolder
Dim ExpandDefaultStoreOnly As Boolean
ExpandDefaultStoreOnly = True
Set Ns = Application.GetNamespace("Mapi")
Set CurrF = Application.ActiveExplorer.CurrentFolder
If ExpandDefaultStoreOnly = True Then
Set F = Ns.GetDefaultFolder(olFolderInbox)
Set F = F.Parent
Set Folders = F.Folders
LoopFolders Folders, True
Else
LoopFolders Ns.Folders, True
End If
DoEvents
Set Application.ActiveExplorer.CurrentFolder = CurrF
End Sub
Private Sub LoopFolders(Folders As Outlook.Folders, _
ByVal bRecursive As Boolean)
Dim F As Outlook.MAPIFolder
For Each F In Folders
Set Application.ActiveExplorer.CurrentFolder = F
DoEvents
If bRecursive Then
If F.Folders.Count Then
LoopFolders F.Folders, bRecursive
End If
End If
Next
End Sub
Следующий скрипт установит все подпапки вашей папки «Входящие» в хранилище по умолчанию для отображения общего количества элементов:
Private Sub ShowTotalCount(Folders As Folders)
For Each Folder In Folders
Folder.ShowItemCount = olShowTotalItemCount
ShowTotalCount Folder.Folders
Next
End Sub
Sub ShowTotalCountAll()
ShowTotalCount Session.DefaultStore.GetDefaultFolder(olFolderInbox).Folders
End Sub
Просто вставьте его в ThisOutlookSession в Outlook VBA (нажмите ALT+F11, чтобы открыть его). После этого запустите макрос ShowTotalCountAll , нажав F5.