当新电子邮件到达共享邮箱中的任何子文件夹时运行代码

2023-11-30

我想在任何新电子邮件到达特定共享邮箱时运行代码。

当电子邮件到达 INBOX 文件夹时触发该事件。
如果新电子邮件直接进入其子文件夹,则该事件不会触发 - 例如[电子邮件受保护]/收件箱/子文件夹1。

如果收件箱中的任何子文件夹收到新电子邮件,我应该更改什么才能运行代码?

邮箱有很多子文件夹。此外,它们的结构可能会改变。

Option Explicit
Private WithEvents mtFolder As Outlook.Folder 
Private WithEvents mtItems As Outlook.Items
  

Private Sub mtItems_ItemAdd(ByVal Item As Object)
  Debug.Print "XXX" 
  'my CODE
End Sub


Private Sub Application_Startup()
    Dim Ns As Outlook.NameSpace
    Set Ns = Application.GetNamespace("MAPI")
    Dim objOwner
    Set objOwner = Ns.CreateRecipient("[email protected]")
    objOwner.Resolve
    If objOwner.Resolved Then
        Set mtFolder = Ns.GetSharedDefaultFolder(objOwner, olFolderInbox)
        Set mtItems = mtFolder.Items
    End If
  
    Set Ns = Nothing
    Exit Sub
eh:
End Sub

非常感谢您的帮助!这是解决方案。 首先,我添加了名为“clsFolder”的类模块和事件:

Option Explicit

Private OlFldr As Folder
Public WithEvents Items As Outlook.Items

'called to set up the object
Public Sub Init(f As Folder) ', sPath As String)
    Set OlFldr = f
    Set Items = f.Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
  If TypeOf Item Is Outlook.MailItem Then
       Debug.Print "eMail '" & Item.Subject & "' was added to Folder '" & OlFldr.name & _
              "'. Mailbox: '" & Item.Parent.Store & "'."
       'do sth with a email added...
  End If
End Sub

然后在 ThisOutlookSession 中,我设置了所有文件夹的集合(共享邮箱中的子文件夹:

Option Explicit
Public colFolders As Collection  '<< holds the clsFolder objects with events

Private Sub Application_Startup()
    Dim Ns As Outlook.NameSpace
    Dim oFolder As Outlook.Folder
    Set Ns = Application.GetNamespace("MAPI")
    Dim objOwner
    Set objOwner = Ns.CreateRecipient("my_Shared_Mailibox")
    objOwner.Resolve
    If objOwner.Resolved Then
        Set oFolder = Ns.GetSharedDefaultFolder(objOwner, olFolderInbox) 
        Set colFolders = New Collection
        processFolder oFolder
    End If
    Set Ns = Nothing
    Set oFolder = Nothing
    Exit Sub
eh:
    
End Sub


'function to create folder objects
Function GetFolderObject(foldr As Folder)
    Dim rv As New clsFolder
    rv.Init foldr
    Set GetFolderObject = rv
End Function

'process all subfolders
Private Sub processFolder(ByVal oParent As Outlook.MAPIFolder)
        Dim oFolder As Outlook.MAPIFolder
        colFolders.Add GetFolderObject(oParent)
        
        Dim oMail As Outlook.MailItem
        For Each oMail In oParent.Items
               'do sth with every email if necessary 
        Next
        If (oParent.Folders.Count > 0) Then
            For Each oFolder In oParent.Folders
                processFolder oFolder
            Next
        End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当新电子邮件到达共享邮箱中的任何子文件夹时运行代码 的相关文章

  • VBA 使用 Like 运算符删除行

    简单的事情并不简单 我试图根据具有以 2L 开头的数据的特定列删除行 所以我写了这段代码 LastRow可以理解 Sub Cleanup For i 1 To LastRow If Range F i Like 2L Then Rows i
  • 使用 If 语句执行 Do Until 直到达到特定值

    我正在处理一份大数据表 我需要代码从特定单元格中减去 直到该值大于某个数字 如果这个数字没有达到 我希望它变成0 例如如果A3 A2 gt Q5 then E3 A3 A2 if lt Q5 do A3 A1 如果这不起作用E2 0 我需要
  • 使用 Excel-VBA(MSXML2.XMLHTTP 对象)更新 SharePoint 列表

    基本信息 我需要从 Excel 更新 添加 编辑 SharePoint 列表 我能够做到这一点ListObject 但这不是我们要走向的方向 在阅读了所有谷歌可能性后 我想出了 也许我错了 使用的想法MSXML2 XMLHTTP对象来更新
  • VBA - HTML 抓取问题

    我正在尝试从网站上抓取拍卖数据https www rbauction com heavy equipment auctions https www rbauction com heavy equipment auctions 我当前的尝试是
  • 在 MS Outlook 中,报告所有未收到回复的已发送邮件

    我每天都会发送大量电子邮件 但常常无法跟踪哪些邮件得到了实际回复 有没有办法使用 VBA 脚本查看上周发送的所有消息 并检查他们是否收到回复 具体来说 是一份已发送电子邮件的报告 这些电子邮件尚未从至少一个发送到的地址收到回复 我了解一点
  • MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中

    在我的数据库中 我可以使用以下命令创建命令按钮导入文件 DoCmd TransferText acImportDelim 导入的原始数据 导入规范 导入的原始数据 D Users Denise Griffith Documents Grif
  • 阻止 Outlook 将 HTML 转换为 RTF

    我正在为 Outlook 2007 编写一个加载项 一切正常 除了当我以 HTML 格式发送电子邮件时 Outlook 将其转换为 RTF 因此 如果收件人在例如中打开它 Thunderbird 他收到的是一条看起来很奇怪的短信 而不是我发
  • 如何模拟“焦点”和“打字”事件

    尝试模拟 onfocus 和打字事件 但它不起作用 Sub Login MyLogin MyPass Dim IEapp As InternetExplorer Dim IeDoc As Object Dim ieTable As Obje
  • 使用 VBA 的下拉菜单

    我需要使用 VBA 从下拉菜单中选择特定选项 我怎样才能做到这一点 链接到我们试图从中提取的网页 IE document getElementsByName down count click 我尝试过的代码 Full Module Priv
  • 如何找到特定程序的安装目录?

    我已经成功地编写了一些用于工作的 VBA 宏 这些宏基本上创建了一个数据文件 将其提供给一个程序并对该程序的输出进行后处理 我的问题是程序安装路径是硬编码在宏中的 并且安装在我同事的计算机上可能会有所不同 我首先想到的是 我可以从每个人那里
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 输入新行并复制上面单元格中的公式

    我正在尝试创建一个 Excel 宏来执行以下操作 在文档末尾输入新行 复制上面单元格中的公式 到目前为止我有这个 Sub New Delta Go to last cell Range A4 Select Selection End xlD
  • 在VBA中初始化全局变量

    在 Excel 2003 中 如何声明全局变量并仅在打开工作簿时初始化它们一次 我有一些由几个宏使用的参数 基本上是输入文件的路径 目前 我的代码如下所示 global path1 path2 as string sub initPaths
  • 如何在 Excel 中对“高”字符进行 HTML 编码或音译?

    在 Excel 中 如何将包含重音字符 大引号等的单元格内容转换为相同字符的 HTML 或音译纯文本版本 我们有一个 XLS 文档 其中包含一些 高 字符 数据已通过数据库连接提取 并且 Excel 似乎正确处理不同代码页中的各个单元格 或
  • 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器

    我一直在尝试使用 vba 代码从 Excel 连接到 Teradata 但收到以下错误 无法通过网络访问 Teradata Server 我已经能够从 Teradata SQL 助手成功连接 并且还成功 ping 通 Teradata 服务
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • Excel 2007 从 C# get_Value 始终返回 -2146826265

    我有一个引用 Microsoft Excel 12 0 对象库的小型 C 应用程序 除此之外 它还从 Excel 单元格读取值 它从一些较旧的 Excel xls 文件和一些 2007 文件 xlsx 中读取此值 所有 xls 文件的值都会
  • 使用图表时避免使用“激活”和“选择”(Excel)

    我知道使用Activate and Select在 Excel 中 VBA 不是最佳实践 我看过有关如何在处理范围时避免它们的参考资料 例如 LINK https stackoverflow com questions 10714251 e
  • 从 VBA 访问串行端口的最佳方法是什么?

    从 VBA 访问串行端口的最佳方法是什么 我需要我们的一些销售代表能够通过 PowerPoint 中的操作按钮通过串行端口发送简单的字符串 我不常用 VBA 尤其是像这样的事情 通常我会把它变成某种应用程序 但实际上我认为这个想法并没有那么

随机推荐