【问题标题】:Automatically saving attachments of certain emails自动保存某些电子邮件的附件
【发布时间】: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

【问题讨论】:

标签: vba outlook


【解决方案1】:

Private WithEvents olInboxItems As Items - Private WithEvents 是什么意思或作用?

WithEvents 指定一个或多个声明的成员变量引用一个可以引发事件的类的实例。

要在 Microsoft Visual Basic 中为 Microsoft Outlook 对象创建事件处理程序,请参阅

Using Events with Automation MSDN

Using Outlook Visual Basic for Applications to Respond to Outlook Events MSDN

NameSpace:简单地说,什么是 NameSpace?

NameSpace 对象 (Outlook),它代表任何数据源的抽象根对象并直接访问 storage 对象。

NameSpace object (Outlook) MSDN

很好的代码示例

Option Explicit
Private WithEvents Items As Outlook.Items

Private Sub Application_Startup()
    Dim olNs As Outlook.NameSpace
    Set olNs = Application.GetNamespace("MAPI")

    Dim Inbox  As Outlook.MAPIFolder
    Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
    Set Items = Inbox.Items

End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is Outlook.MailItem Then
        DoEvents
        '' call another sub
    End If
End Sub

将对象设置为空 - https://stackoverflow.com/a/517202/4539709

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2021-06-26
    • 2019-05-07
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多