|
|||||||
outlook-vba 3.4 Листинг имен каждой папки в каждом доступном хранилище
Время создания: 09.04.2020 19:32
Текстовые метки: vba_outlook
Раздел: Разные закладки - VBA - Outlook - outlook-vba
Запись: xintrea/mytetra_db_adgaver_new/master/base/15864485452j4xfhlx7m/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
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
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|