【发布时间】:2019-01-17 02:55:28
【问题描述】:
我有工作代码可以根据主题回复用户 Outlook 中的电子邮件。但是,我无法通过所有用户的收件箱进行代码搜索。
到目前为止,它只会搜索用户的特定收件箱。这是我的代码,我已经四处搜索,但找不到我的 VBA 知识可以理解的解决方案。
Sub Display()
Dim Fldr As Outlook.Folder
Dim olfolder As Outlook.MAPIFolder
Dim olMail As Outlook.MailItem
Dim olReply As Outlook.MailItem
Dim olItems As Outlook.Items
Dim i As Integer
Dim signature As String
Set Fldr = Session.GetDefaultFolder(olFolderInbox)
Set olItems = Fldr.Items
olItems.Sort "[Received]", True
For i = 1 To olItems.count
signature = Environ("appdata") & "\Microsoft\Signatures\"
If Dir(signature, vbDirectory) <> vbNullString Then
signature = signature & Dir$(signature & "*.htm")
Else
signature = ""
End If
signature = CreateObject("Scripting.FileSystemObject").GetFile(signature).OpenAsTextStream(1, -2).ReadAll
Set olMail = olItems(i)
If InStr(olMail.Subject, Worksheets("Checklist Form").Range("B8")) <> 0 Then
If Not olMail.Categories = "Executed" Then
Set olReply = olMail.ReplyAll
With olReply
.HTMLBody = "<p style='font-family:calibri;font-size:14.5'>" & "Hi Everyone," & _
"<p style='font-family:calibri;font-size:14.5'>" & "Workflow ID:" & " " & _
Worksheets("Checklist Form").Range("B6") & "<p style='font-family:calibri;font-size:14.5'>" & _
Worksheets("Checklist Form").Range("B11") & "<p style='font-family:calibri;font-size:14.5'>" & _
"Regards," & "</p><br>" & signature & .HTMLBody
.Display
.Subject = "RO Finalized WF:" & Worksheets("Checklist Form").Range("B6") & " " & _
Worksheets("Checklist Form").Range("B2") & " -" & Worksheets("Fulfillment Checklist").Range("B3")
End With
Exit For
olMail.Categories = "Executed"
End If
End If
Next i
End Sub
【问题讨论】:
-
您应该能够在
Set Fldr...行 ` For Each mSubfolder In Fldr.Folders` 之后添加另一个 for 循环,最后您必须将其后的行更改为Set olItems = mySubfolder.Items -
如果这不起作用,请查看此答案stackoverflow.com/a/2273050/2727437
-
它应该是 mSubfolder 吗?或 mysubfolder,我还需要声明它吗?
-
对那里的错字感到抱歉。我的意思是让他们都成为“我的”。
mySubfolder只是文件夹对象的示例名称,所以它是Dim mySubfolder As Outlook.Folder -
我似乎无法让它工作。你介意用我的代码和附加的代码行来回答这个问题吗?我肯定错过了什么。谢谢马克