【问题标题】:Search the mails containing one email id in all inbox subfolders在所有收件箱子文件夹中搜索包含一个电子邮件 ID 的邮件
【发布时间】:2017-12-07 19:18:59
【问题描述】:

从上个月以来存在的收件箱的子文件夹中查找所有电子邮件(按文件夹名称,即电子邮件 ID),并按主题将它们复制粘贴到相应的文件夹中。

我被困在代码 NS = OlApp.GetNamespace("MAPIFolder") 也与 ("MAPI") 以及未设置对象变量的错误正在显示

Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Set OlApp = CreateObject("Outlook.Application")
Dim fldrpath As String
Dim fldername As String
Dim oMail As Object
fldrpath = "\data\EMAILS\" & fldrname
Dim NS As Namespace
Dim Folder As MAPIFolder
Dim sName As String
Dim dtdate As String
Dim Inbox As MAPIFolder
NS = OlApp.GetNamespace("MAPIFolder")
Set Inbox = NS.GetDefaultFolder(olFolderInbox)
For Each mysubFolders In Inbox.subFolders
Set mysubfolder = Inbox.subFolders("PDI").Folders("OBU").Folders("DND")
For Each mailItems In mysubfolder
If oMail.Body = r Then
Set mailItems = oMail
sName = mailItems.Subject
dtdate = mailItems.ReceivedTime
Debug.Print fldrpath & sName
mailItems.SaveAs fldrpath & sName, olMSG
End If
 Next
Set OlApp = Nothing
Set mailItems = Nothing
Next
End Sub

【问题讨论】:

  • 应该很简单。使用代码的当前状态更新您的问题,以便我们知道从哪里开始。
  • 我很高兴听到它很简单,但目前我被困在这个...请帮助。有问题的代码已更新
  • 好更新!现在准确告诉我们您遇到的问题、卡住的原因以及您尝试解决的问题。
  • 我卡在代码 NS = OlApp.GetNamespace("MAPI Folder") 中,给我错误作为对象变量或阻止设置
  • 用 ^ 这个问题更新您的问题和标题,并将您的代码分解为问题的最小示例。

标签: vba email outlook


【解决方案1】:

第一个问题是这一行,缺少 Set 关键字:

设置 NS = OlApp.GetNamespace("MAPIFolder")

然后您正在访问“Inbox.subFolders”,但 Folder 对象上没有此类属性;这将是您想要的 Folders 属性集合。

您也没有在循环中使用 mysubFolders 变量,因此整个代码块都会失败。您尝试从 mysubfolder 对象迭代的 mailItems 对象也没有显式设置。

我会继续,但坦率地说,整个方法需要重写。专注于确保您将正确的变量声明并设置为正确的属性或对象。

【讨论】:

  • 非常感谢您的回复...!我尝试了另一种方法来使用 Outlook 中的即时搜索来执行此任务。
猜你喜欢
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 2012-11-26
相关资源
最近更新 更多