outlook-vba
Введение Часть 2: Магазины и папки верхнего уровня
Поиск…
Вступление
Первая часть введения в магазины и папки, которые они содержат. Содержит макросы для отображения (1) имен доступных магазинов и (2) имена доступных магазинов и папки верхнего уровня внутри них.
2.1 Ожидаемые предварительные знания
- Вы являетесь пользователем Outlook и понимаете такие термины, как «электронная почта», «полученное время», «тема» и «панель папок».
- Вы знаете, как получить доступ к редактору Visual Basic Visual Basic и создать модуль. См. Введение Часть 1, если необходимо.
- У вас есть, по крайней мере, базовые знания VBA. Я объявляю подпрограммы и переменные без объяснения причин. Я использую Withs, Ifs и Loops без объяснения причин. Я говорю вам, что что-то есть в коллекции. Я предлагаю вам скопировать код в модуль и запустить его. Есть много онлайн-руководств, хотя большинство из них предназначены для Excel VBA и больше сосредоточены на использовании языка с Excel, чем на языке. Поиск «VBA tutorial» приводит к тому, что некоторые из них сосредоточены на языке больше, чем приложение, которое выглядит удовлетворительным.
- Вам не требуется знать объектную модель Outlook; этот учебник познакомит вас с небольшой его частью.
2.2 Магазины
Outlook хранит электронные письма, элементы календаря, заметки, задачи и т. Д. В файлах, известных как магазины . Если вы посмотрите на свою панель папок, вы увидите что-то вроде:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
«Aaaaaaaaaa», «Bbbbbbbbbbb» и «Cccccccccc» - это пользовательские или отображаемые имена магазинов. Я всегда принимал Outlook по умолчанию для этих имен, которые менялись с годами. Когда по умолчанию было мое имя, это мой адрес электронной почты. Имя файла для этих магазинов может быть одинаковым, но с расширением, таким как PST или OST, или может быть чем-то совершенно другим. Макрос VBA нуждается в имени пользователя для доступа к хранилищу и не имеет отношения к именам файлов или расширению.
У вас может быть столько магазинов, сколько пожелаете. У меня есть «файл данных Outlook», который был создан для меня, когда я установил Outlook. Когда я добавил учетные записи для своих адресов электронной почты, Outlook создал новые магазины, названные по адресу электронной почты, такие как «[email protected]» и «[email protected]». Чтобы уменьшить размер моего основного магазина, я сохраняю старые электронные письма в магазинах с такими именами, как «Архив 2015».
Если вы являетесь деловым пользователем, у вас может быть доступ к общим хранилищам или магазинам коллег.
В приведенных ниже макросах показаны три способа перечисления магазинов, к которым вы можете получить доступ. Я предлагаю вам создать новый модуль для хранения кода ниже и использовать F4 для доступа к свойствам модуля, чтобы вы могли называть его «ModIntro» или другим именем по вашему выбору. Если вы закончите часть 1 этой серии, у вас уже будет такой модуль.
Скопируйте эти макросы в модуль и проверьте, что каждый дает тот же результат.
Sub ListStores1()
Dim InxStoreCrnt As Integer
Dim NS As NameSpace
Dim StoresColl As Folders
Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
Set StoresColl = NS.Folders
For InxStoreCrnt = 1 To StoresColl.Count
Debug.Print StoresColl(InxStoreCrnt).Name
Next
End Sub
Sub ListStores2()
Dim StoresColl As Stores
Dim StoreCrnt As Store
Set StoresColl = Session.Stores
For Each StoreCrnt In StoresColl
Debug.Print StoreCrnt.DisplayName
Next
End Sub
Sub ListStores3()
Dim InxStoreCrnt As Long
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Debug.Print .Folders(InxStoreCrnt).Name
Next
End With
End Sub
Вы найдете в VBA, что есть несколько способов достижения такого же эффекта. Выше я показал три метода доступа к магазинам. Вам не нужно их помнить - выберите свой любимый, но вам нужно знать, что существует несколько методов, потому что другие люди, чей код вам может понадобиться учиться, будут иметь разные фавориты.
Переменные StoresColl
в макросах ListStores1()
и ListStores2()
являются коллекциями, но содержат разные типы объектов: « Store
и Folder
. Объект Store
может ссылаться только на файл на вашем диске. Folder
может ссылаться на файл на диске, но также может ссылаться на папки в хранилище, такие как «Входящие» и «Отправленные». Stores
, Folders
, Store
и Folder
- все это часть объектной модели Outlook. В этой серии учебников вы познакомитесь с моделью, но это не формальное определение. Если вы хотите формальное определение, введите «outlook vba object model» в свою любимую поисковую систему. Убедитесь, что вы смотрите на версию модели VBA.
2.3 Папки верхнего уровня
В приведенном выше примере панели папок я перечисляю только три стандартные папки: «Входящие», «Черновики» и «Удаленные элементы». Существуют и другие стандартные папки, и вы можете создать столько папок, сколько хотите. Некоторые люди создают папки в папке «Входящие», но я предпочитаю создавать новые папки на том же уровне, что и «Входящие». В ваших папках могут быть подпапки, которые могут иметь свои собственные подпапки на любую глубину.
Следующий макрос создаст листинг формы:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
где A, B и C являются хранилищами и A1, B1, C1 и т. д. являются папками в пределах A, B и C. Если A1, B1, C1 и т. д. имеют подпапки, они не будут перечислены этим макросом. Доступ к более глубоко вложенным папкам будет рассмотрен в следующей части этого руководства.
Sub ListStoresAndTopLevelFolders()
Dim FldrCrnt As Folder
Dim InxFldrCrnt As Long
Dim InxStoreCrnt As Long
Dim StoreCrnt As Folder
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Set StoreCrnt = .Folders(InxStoreCrnt)
With StoreCrnt
Debug.Print .Name
For InxFldrCrnt = .Folders.Count To 1 Step -1
Set FldrCrnt = .Folders(InxFldrCrnt)
With FldrCrnt
Debug.Print " " & .Name
End With
Next
End With
Next
End With
End Sub
2.4 Что вы должны помнить из этого урока
- Хранилище - это файл, в котором Outlook хранит сообщения электронной почты, элементы календаря, заметки, задачи и т. Д.
- В хранилище могут быть стандартные папки Outlook, такие как «Входящие» и «Отправленные».
- Магазин также может содержать созданные пользователем папки.
- Стандартные папки Outlook и созданные пользователем папки могут содержать созданные пользователем подпапки, под-подпапки и т. Д. На любую глубину.
- Как перечислить магазины.
- Как перечислить магазины и папки верхнего уровня в этих магазинах.
Исповедь: я не помню ни одного из «Хаусов». У меня есть подпрограммы и функции, которые меня помнят.