Поиск…


Вступление

Первая часть введения в магазины и папки, которые они содержат. Содержит макросы для отображения (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 и созданные пользователем папки могут содержать созданные пользователем подпапки, под-подпапки и т. Д. На любую глубину.
  • Как перечислить магазины.
  • Как перечислить магазины и папки верхнего уровня в этих магазинах.

Исповедь: я не помню ни одного из «Хаусов». У меня есть подпрограммы и функции, которые меня помнят.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow