Я пытаюсь написать макрос для автоматического сохранения определенных отчетов, которые мы получаем по электронной почте на работе. В другом отделе есть что-то очень похожее, так что я могу много раз использовать их код. Однако они не могли объяснить мне, что делают определенные части кода, и поиск в Google не был особенно полезен.
Если это поможет, я опубликую весь код, я оставил его, потому что а) Мне придется редактировать некоторые вещи (имена и другие c) и б) Я не думаю, что это актуально к моей проблеме.
Смысл кода в том, что при запуске макрос запускается; каждое новое письмо затем проверяется (отправителем; темой сообщения; вложениями). Мне трудно понять начальную часть кода, потому что я не очень разбираюсь в VBA и никогда не использовал VBA в Outlook.
Option Explicit
Private WithEvents olInboxItems As Items
Private Sub Application_Startup()
Dim objNS As NameSpace
Set objNS = Application.Session
Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Folders("reports").Items
Set objNS = Nothing
End Sub
Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
If Item.Attachments.Count > 0 Then
….
End Sub
Вопросы:
Private WithEvents olInboxItems As Items
- Что означает или делает Private WithEvents
? Я знаю о событиях в VBA, таких как открытие рабочей книги, но я не мог понять, что подразумевалось под этой строкой.
NameSpace
: Проще говоря, что такое пространство имен? Что я прочитал, так это то, что в Outlook структура объекта отличается от структуры, скажем, Excel. Пространство имен находится чуть ниже уровня приложения. Если это правильно, то я думаю, что это достаточно хорошо для меня, но если у кого-нибудь есть аккуратное объяснение, я был бы признателен.
Зачем вам Set objNS = Nothing
?