MyTetra Share
Делитесь знаниями!
outlook-vba 3.4 Листинг имен каждой папки в каждом доступном хранилище
Время создания: 09.04.2020 19:32
Текстовые метки: outlook-vba
Раздел: !Закладки - VBA - Outlook - outlook-vba

outlook-vba 3.4. Листинг имен каждой папки в каждом доступном хранилище


пример#

В части 2 вам было показано, как перечислять все доступные хранилища и папки верхнего уровня в каждом магазине. Это включало цикл через магазины, а затем цикл для каждого хранилища через его папки. Вы уже видели, как ссылаться на известную папку на любой глубине в иерархии папок. Это связано с объединением целых Folders("x") s, необходимых для доступа к папке.

Теперь я хочу перечислить каждую папку на любой глубине в каждом магазине. Самый простой способ кодирования для решения проблемы такого типа, где вы должны двигаться вниз по цепочкам различной длины, - это рекурсия . Если вы серьезный программист на другом языке или инструменте, вы, возможно, уже знаете о рекурсии. Если у вас есть амбиции быть серьезным программистом, вам нужно будет понять рекурсию в конце концов, но не обязательно сегодня. «Рекурсия» - одна из тех концепций, которые многим трудно понять вначале. Вы можете ввести «Recursion» в свою любимую поисковую систему и прочитать различные попытки объяснить эту концепцию. Кроме того, вы можете принять эти макросы, но не беспокоиться о том, как они работают.

Обратите внимание на комментарий в ListStoresAndAllFolders() : этим макросам нужна ссылка на «Время выполнения сценариев Microsoft». Нажмите « Инструменты» на панели вкладок в верхней части окна «Редактор VB» и нажмите « Ссылки» . Вы получите список всех доступных ссылок (библиотек). Некоторые наверху уже будут отмечены галочкой. Остальные в алфавитном порядке. Прокрутите список вниз и нажмите на поле слева от «Microsoft Scripting Runtime», чтобы получить отметку. Затем нажмите « ОК».

Sub ListStoresAndAllFolders()


' Displays the name of every accessible store

' Under each store, displays an indented list of all its folders


' Technique for locating desktop from answer by Kyle:

' http://stackoverflow.com/a/17551579/973283


' Needs reference to “Microsoft Scripting Runtime” if "TextStream"

' and "FileSystemObject" are to be recognised


Dim FileOut As TextStream

Dim FldrCrnt As Folder

Dim Fso As FileSystemObject

Dim InxFldrCrnt As Long

Dim InxStoreCrnt As Long

Dim Path As String

Dim StoreCrnt As Folder


Path = CreateObject("WScript.Shell").SpecialFolders("Desktop")

Set Fso = CreateObject("Scripting.FileSystemObject")

Set FileOut = Fso.CreateTextFile(Path & "\ListStoresAndAllFolders.txt", True)


With Application.Session

For InxStoreCrnt = 1 To .Folders.Count

Set StoreCrnt = .Folders(InxStoreCrnt)

With StoreCrnt

FileOut.WriteLine .Name

For InxFldrCrnt = .Folders.Count To 1 Step -1

Set FldrCrnt = .Folders(InxFldrCrnt)

Call ListAllFolders(FldrCrnt, 1, FileOut)

Next

End With

Next

End With


FileOut.Close


End Sub

Sub ListAllFolders(ByRef Fldr As Folder, ByVal Level As Long, ByRef FileOut As TextStream)


' This routine:

' 1. Output name of Fldr

' 2. Calls itself for each child of Fldr

' It is designed to be called by ListStoresAndAllFolders()


Dim InxFldrCrnt As Long


With Fldr

FileOut.WriteLine Space(Level * 2) & .Name

For InxFldrCrnt = .Folders.Count To 1 Step -1

Call ListAllFolders(.Folders(InxFldrCrnt), Level + 1, FileOut)

Next

End With


End Sub


После запуска ListStoresAndAllFolders на вашем DeskTop появится новый файл с именем «ListStoresAndAllFolders.txt», который будет содержать обещанный список магазинов и папок.


Previous Next

Related Tags

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования