具有多个日期条件的限制方法过滤器

2024-03-24

我正在尝试使用 Excel VBA 过滤掉我的 Outlook 邮件收件箱,然后在满足条件时最终发送电子邮件。

完整的条件是:如果 Outlook 收件箱包含日期范围内(过去 7 天)且来自发件人(动态发件人电子邮件)的主题。

我已经完成了sub sendEmails(),现在正在努力过滤邮件。

我现在已经成功过滤掉了我正在查看的主题的代码。 但是,在尝试将日期范围包含到过滤器中之后, 搞砸了。

第一个问题:过滤器给了我

运行时错误 13:类型不匹配。

我知道会发生这种情况,因为过滤器包含String and Date值,所以我尝试将类型更改为variant但仍然遇到错误。

另一个问题是我关注了这个帖子 https://stackoverflow.com/questions/42777395/excel-vba-sql-string-filter-multiple-like-condition用于尝试添加日期条件。和这个帖子 https://stackoverflow.com/questions/17316286/search-outlook-mail-item-by-displayed-received-date-instead-of-header-informatio应用日期过滤器。 如果有经验的人能够纠正我的错误,确实有很多错误,我将不胜感激。 (还没跑到那里,但只是strong感觉会碰到错误)

这是我第一次处理这个问题,所以请放轻松。

Sub Search_Inbox()

Dim myOlApp As New Outlook.Application
Dim objNamespace As Outlook.Namespace
Dim objFolder As Outlook.MAPIFolder
Dim filteredItems As Outlook.Items
Dim itm As Object
Dim Found As Boolean
Dim Filter As Variant

Dim tdyDate As String
Dim checkDate As Date
tdyDate = Format(Now(), "Short Date")
checkDate = DateAdd("d", -7, tdyDate) ' DateAdd(interval,number,date)

Set objNamespace = myOlApp.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)

'https://msdn.microsoft.com/en-us/library/aa579702(v=exchg.80).aspx
Filter = "@SQL=" & Chr(34) & "(urn:schemas:httpmail:subject" & Chr(34) & " like 'Reminder on Subject' &" _
                     And Chr(34) & "urn:schemas:httpmail:datereceived >= & checkDate &  " _
                     And Chr(34) & "urn:schemas:httpmail:datereceived >= & tdyDate &"

Set filteredItems = objFolder.Items.Restrict(Filter)

If filteredItems.Count = 0 Then
    Debug.Print "No emails found"
    Found = False
Else
    Found = True
    ' this loop is optional, it displays the list of emails by subject.
    For Each itm In filteredItems
     Debug.Print itm.Subject
    Next
End If


'If the subject isn't found:
If Not Found Then
    'NoResults.Show
Else
   Debug.Print "Found " & filteredItems.Count & " items."

End If
Set myOlApp = Nothing
End Sub

假设您只是在添加日期文件管理器时遇到问题,您可以找到一些有用的东西here https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/items-restrict-method-outlook.
现在将其应用到您的代码中,您必须将日期用单引号 (') 括起来。

尽管日期和时间通常以日期格式存储,但 Find 和 Restrict 方法要求将日期和时间转换为字符串表示形式。

Dim tdyDate As String, checkDate As String

tdyDate = "'" & Format(Date, "Short Date") & "'"
checkDate = "'" & Format(Date - 7, "Short Date") & "'"

或者您可以尝试:

tdyDate = Format(Date, "\'ddddd\'") '/* until todays date */
checkDate = Format(Date - 7, "\'ddddd\'") '/* I suppose you are filtering 7 days ago? */

然后构建你的过滤器:

eFilter = "@SQL= (urn:schemas:httpmail:subject Like 'Reminder on Subject'" & _
          " And urn:schemas:httpmail:datereceived >= " & checkDate & _
          " And urn:schemas:httpmail:datereceived <= " & tdyDate & ")"

Note: I used eFilter instead of Filter as variable because it is a reserved word in VBA.

这会给你:

@SQL= (urn:schemas:httpmail:subject 就像'主题提醒' 并且 urn:schemas:httpmail:datereceived >= '1/2/2018' 并且 urn:schemas:httpmail:datereceived

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个日期条件的限制方法过滤器 的相关文章

随机推荐

  • 如何使用 ant 任务从 IBM Jazz 修订控制服务器下载文件?

    我对 IBM Jazz 非常陌生 我已经下载了 RTC BuildSystem Toolkit 其中包括 eclipse 插件和 ant 构建任务定义 我的问题是如何从 Jazz 服务器下载 获取文件 我必须使用 teamFetch ant
  • DataContractSerializer 未序列化继承 ISerialized 的类的成员

    我有这门课 using System using System Collections Generic using System Runtime Serialization namespace Grouping Serializable p
  • 用于 google chrome 扩展的 Facebook JavaScript API

    我制作了一个 chrome 扩展来自动喜欢特定的页面帖子 用一个简单的弹出控制器和后台线程来处理fb api交互 我无法使用官方示例方法将 facebook js api 加载到扩展页面中 剧本jssdk https connect fac
  • 删除字典中列表中的元素

    在大字典中 类似于 d d a 1 2 3 4 d b 1 2 3 4 5 6 d c 1 2
  • 带有随机插入的 PostgreSQL 循环

    我在数据库中有一个表 CREATE TABLE operation br id integer NOT NULL DEFAULT NEXTVAL seq operation br phone number varchar 30 br age
  • 如何为 Android 应用程序创建导游

    几个月前 我给自己买了一台 HTC ONE X 我很欣赏他们通过交互式小部件和帮助功能引导用户在手机中迈出第一步的方式 我想将这种功能添加到我们正在构建的应用程序 Rogerthat 中 但我想知道是否有工具 库可以帮助我实现这一目标 Ro
  • javac 的类路径和源路径选项之间的差异

    我阅读了 Sun 文档和 Stack Overflow 上的很多帖子 但我仍然对 Java 编译器选项之间的差异感到困惑 cp and sourcepath 假设我有这个目录结构 c Java project1 src where the
  • asp.net MVC 3中的简单Ajax,更新模型和重新渲染部分

    我来自一个更WPF应用程序背景 我习惯了绑定等 然后进入网站可能会带来问题 因为它们的工作方式有很大不同 我正在尝试做一个简单的Ajax行动但不知道从哪里开始 基本上我想制作一个下拉列表来更改模型上的一个属性并重新渲染页面的该部分 也许这太
  • 在 iOS 上使用 CommonCrypto 的 PBKDF2

    我正在尝试使用CommonCrypto使用生成密钥PBKDF2但我似乎无法导入CommonCrypto CommonKeyDerivation h 我只是错误地认为没有找到 有任何想法吗 编辑 我可能应该提到我已经添加了安全框架 我可以导入
  • 检测 TextEditor SwiftUI 的键盘“提交按钮”按下

    在 SwiftUI 上TextField您可以使用以下命令为键盘的返回 提交按钮设置操作 onSubmit 修饰符 你如何实现同样的目标TextEditor onSubmit 似乎不起作用 您可以使用 onchange 作为绑定变量Text
  • 从 C# 连接和使用 sqlite 数据库的最佳方式是什么

    我之前在 C 中通过包含 sqlite h 完成了此操作 但是在 C 中是否有类似的简单方法 我和布鲁斯在一起 我在用http system data sqlite org http system data sqlite org 也取得了巨
  • 从 Spark 写入时避免丢失分区数据的数据类型

    我有一个如下所示的数据框 itemName itemCategory Name1 C0 Name2 C1 Name3 C0 我想将此数据框保存为分区镶木地板文件 df write mode overwrite partitionBy ite
  • Azure Functions 主机密钥自动重置

    我们有一个托管在 Azure 上的函数应用程序 其中包含多个函数 Function 应用程序有一个通用的主机密钥 我们最近遇到了主机密钥自动重置 删除的问题 因此 调用这些 Api 的应用程序会出错并且不会执行 我没有找到任何有关此问题以及
  • HTML5 将 png 缓冲区加载到画布中(用于流式传输)

    通过 websocket 我检索 PNG 格式的图像的二进制缓冲区 类似的东西 http blog nihilogic dk 2008 05 compression using canvas and png html 我想将此 PNG 缓冲
  • 在 Ant Design React 框架中将表列标题转置(旋转)到行

    我正在尝试使用 Ant Design React UI 框架创建一个表 其中行设置表标题而不是列 换句话说 我正在尝试转置默认表 默认情况下 使用该框架的表格如下所示 First Name Last Name Date of Birth A
  • Java、代码生成和持久性框架

    有没有 Java 代码生成持久性框架 是 数据库优先 而不是对象模型优先吗 我知道这在 Java 世界中可能是异端邪说 我只是想知道是否存在这样的框架 现在我更像是一个 NET 人了 因此 在 NET 端 我们想到了 NET Tiers 或
  • AngularJS - 绑定/监视返回承诺的函数

    我已经发布an issue https github com angular angular js issues 3503在 AngularJS github 上 但它似乎没有得到太多关注 而且我无法自己修复它 因为这是一个相当低级的问题
  • 如何自定义 Cerberus 的错误消息?

    我想本地化 Cerberus 返回的错误消息 例如我想实现以下目标 gt gt gt validator schema animal forbidden Einhorn gt gt gt validator animal Einhorn F
  • 检查 Zip 文件是否受密码保护

    我正在使用 PowerShell 提取多个 ZIP 文件 其中一些文件受密码保护 要求是跳过受密码保护的文件 当此代码遇到受密码保护的文件时 它会显示一个输入密码的框 有什么方法可以在解压 ZIP 文件之前检查它是否受密码保护吗 我试过点网
  • 具有多个日期条件的限制方法过滤器

    我正在尝试使用 Excel VBA 过滤掉我的 Outlook 邮件收件箱 然后在满足条件时最终发送电子邮件 完整的条件是 如果 Outlook 收件箱包含日期范围内 过去 7 天 且来自发件人 动态发件人电子邮件 的主题 我已经完成了su