Excel 循环浏览所有Outlook收件箱,包括共享收件箱错误
我有一些代码,可以搜索用户的Outlook并根据您在工作表单元格中输入的主题短语回复电子邮件。几天前我确实让它工作了,但现在我似乎无法让它工作(被删除)。运行后,代码行“Set-olitems=flrd.Items”将持续显示一条错误消息,表示“未设置对象变量或带块变量”。我认为问题在于,如果我把它放在哪里,要么代码什么都不做,要么显示相同的错误,那么就结束了 工作代码唯一的另一个问题(当它工作时)是它填充了不止一次。我希望它只填充一次Excel 循环浏览所有Outlook收件箱,包括共享收件箱错误,excel,vba,outlook,Excel,Vba,Outlook,我有一些代码,可以搜索用户的Outlook并根据您在工作表单元格中输入的主题短语回复电子邮件。几天前我确实让它工作了,但现在我似乎无法让它工作(被删除)。运行后,代码行“Set-olitems=flrd.Items”将持续显示一条错误消息,表示“未设置对象变量或带块变量”。我认为问题在于,如果我把它放在哪里,要么代码什么都不做,要么显示相同的错误,那么就结束了 工作代码唯一的另一个问题(当它工作时)是它填充了不止一次。我希望它只填充一次 Sub Display() Dim Fldr As Ou
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
Dim allStores As Stores
Dim storeInbox As Folder
Dim j As Long
Set allStores = Session.Stores
For j = 1 To allStores.count
On Error Resume Next
Debug.Print i & " DisplayName - " & allStores(i).DisplayName
On Error GoTo 0
Set storeInbox = Nothing
On Error Resume Next
Set storeInbox = allStores(i).GetDefaultFolder(olFolderInbox)
On Error GoTo 0
If Not storeInbox Is Nothing Then
End if
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
Set Fldr = StoreInbox
Next
ExitRoutine:
Set allStores = Nothing
Set storeInbox = Nothing
End Sub
子显示()
将Fldr设置为Outlook.Folder
将文件夹设置为Outlook.MAPIFolder
以Outlook.MailItem的形式发送邮件
请以Outlook.MailItem的形式答复
将MS设置为Outlook.Items
作为整数的Dim i
作为字符串的数字签名
把所有的商店都当作商店
将收件箱设置为文件夹
Dim j尽可能长
设置allStores=Session.Stores
对于j=1到allStores.count
出错时继续下一步
Debug.Print i&“DisplayName-”&所有存储(i).DisplayName
错误转到0
Set storeInbox=Nothing
出错时继续下一步
Set storeInbox=allStores(i).GetDefaultFolder(olFolderInbox)
错误转到0
如果不是,那么storeInbox什么都不是
如果结束
设置MS=Fldr.项目
.Sort“[Received]”,True
对于i=1到ms计数
签名=环境(“appdata”)和“\Microsoft\Signatures”
如果Dir(签名,vbDirectory)vbNullString,则
签名=签名和目录$(签名和“*.htm”)
其他的
signature=“”
如果结束
signature=CreateObject(“Scripting.FileSystemObject”).GetFile(signature.OpenAsTextStream(1,-2).ReadAll
设置olMail=ms(i)
如果InStr(olMail.Subject,工作表(“检查表”)范围(“B8”)为0,则
如果不是olMail.Categories=“已执行”,则
设置olReply=olMail.replyll
答复
.HTMLBody=“”和“大家好,”_
“
”和“工作流ID:&”&”_
工作表(“检查表”)。范围(“B6”)和“
”和_
工作表(“检查表”)。范围(“B11”)和“
”和_
“问候”&“
”&签名和.HTMLBody
.展示
.Subject=“RO定稿WF:”&工作表(“检查表”)。范围(“B6”)和“&”_
工作表(“检查表”).范围(“B2”)和“-”以及工作表(“履行检查表”).范围(“B3”)
以
退出
olMail.Categories=“已执行”
如果结束
如果结束
接下来我
设置Fldr=StoreInbox
下一个
现存的:
设置所有存储=无
Set storeInbox=Nothing
端接头
首先,清除下一行恢复时出现的错误。
其次,Fldr
变量从未设置。您是否打算改用storeInbox
变量
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
Dim allStores As Stores
Dim storeInbox As Folder
Dim j As Long
Set allStores = Session.Stores
For j = 1 To allStores.count
On Error Resume Next
Debug.Print i & " DisplayName - " & allStores(i).DisplayName
On Error GoTo 0
Set storeInbox = Nothing
On Error Resume Next
Set storeInbox = allStores(i).GetDefaultFolder(olFolderInbox)
On Error GoTo 0
If Not storeInbox Is Nothing Then
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 if
Next
ExitRoutine:
Set allStores = Nothing
Set storeInbox = Nothing
End Sub
子显示()
将Fldr设置为Outlook.Folder
将文件夹设置为Outlook.MAPIFolder
以Outlook.MailItem的形式发送邮件
请以Outlook.MailItem的形式答复
将MS设置为Outlook.Items
作为整数的Dim i
作为字符串的数字签名
把所有的商店都当作商店
将收件箱设置为文件夹
Dim j尽可能长
设置allStores=Session.Stores
对于j=1到allStores.count
出错时继续下一步
Debug.Print i&“DisplayName-”&所有存储(i).DisplayName
错误转到0
Set storeInbox=Nothing
出错时继续下一步
Set storeInbox=allStores(i).GetDefaultFolder(olFolderInbox)
错误转到0
如果不是,那么storeInbox什么都不是
设置MS=Fldr.项目
.Sort“[Received]”,True
对于i=1到ms计数
签名=环境(“appdata”)和“\Microsoft\Signatures”
如果Dir(签名,vbDirectory)vbNullString,则
签名=签名和目录$(签名和“*.htm”)
其他的
signature=“”
如果结束
signature=CreateObject(“Scripting.FileSystemObject”).GetFile(signature.OpenAsTextStream(1,-2).ReadAll
设置olMail=ms(i)
如果InStr(olMail.Subject,工作表(“检查表”)范围(“B8”)为0,则
如果不是olMail.Categories=“已执行”,则
设置olReply=olMail.replyll
答复
.HTMLBody=“”和“大家好,”_
“
”和“工作流ID:&”&”_
工作表(“检查表”)。范围(“B6”)和“
”和_
工作表(“检查表”)。范围(“B11”)和“
”和_
“问候”&“
”&签名和.HTMLBody
.展示
.Subject=“RO定稿WF:”&工作表(“检查表”)。范围(“B6”)和“&”_
工作表(“检查表”).范围(“B2”)和“-”以及工作表(“履行检查表”).范围(“B3”)
以
退出
olMail.Categories=“已执行”
如果结束
如果结束
接下来我
如果结束
下一个
现存的:
设置所有存储=无
Set storeInbox=Nothing
端接头
评论不用于扩展讨论;这段对话已经结束。