【发布时间】:2020-04-05 17:21:12
【问题描述】:
我正在尝试编写一个宏来自动保存我们在工作中通过电子邮件收到的某些报告。另一个部门有一些非常相似的东西,所以我可以重用他们的很多代码。但是,他们无法真正向我解释代码的某些部分是做什么的,并且谷歌搜索它并不是特别有用。
如果有帮助,我会发布整个代码,我将其省略,因为 a) 我必须编辑一些东西(名称等),b) 我认为这与我的问题无关。
代码的重点是在启动时宏启动;然后检查每封新电子邮件(按发件人;主题行;附件)。我很难理解代码的启动部分,因为我一般没有 VBA 经验,也从未在 Outlook 中使用过 VBA。
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?
【问题讨论】: