运行计时器错误“;5“;将Outlook Folder.items分配给Excel中的对象时
我遇到了一些Excel报告无法解决的问题 运行计时器错误“5” 将Outlook运行计时器错误“;5“;将Outlook Folder.items分配给Excel中的对象时,excel,vba,outlook,Excel,Vba,Outlook,我遇到了一些Excel报告无法解决的问题 运行计时器错误“5” 将Outlook文件夹.items分配给对象时 这是这一条的后续线索 修复自动错误后,我遇到运行时错误5,运行代码时过程调用或参数无效: ''Set-olItem=MyFolder.Items'' 谁能帮忙吗 Sub CountInboxSubjects() Dim olApp As Outlook.Application Dim olNs As Outlook.Namespace Dim olFldr A
文件夹.items
分配给对象时
这是这一条的后续线索
修复自动错误后,我遇到运行时错误5,运行代码时过程调用或参数无效:
''Set-olItem=MyFolder.Items''
谁能帮忙吗
Sub CountInboxSubjects()
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olFldr As Outlook.MAPIFolder
Dim MyFolder As Outlook.MAPIFolder
Dim MyFolder1 As Outlook.MAPIFolder
Dim MyFolder2 As Outlook.MAPIFolder
Dim MyFolder3 As Outlook.MAPIFolder
Dim olMailItem As Outlook.MailItem
Dim propertyAccessor As Outlook.propertyAccessor
Dim olItem As Object
'Dim olItem As Outlook.Items
Dim dic As Dictionary
Dim i As Long
Dim Subject As String
Dim val1 As Variant
Dim val2 As Variant
val1 = ThisWorkbook.Worksheets("EPI_Data").Range("I2")
val2 = ThisWorkbook.Worksheets("EPI_Data").Range("I3")
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
'Set olFldr = olNs.GetDefaultFolder(olFolderInbox)
Set olShareName = olNs.CreateRecipient("F0400602@email.com")
Set olFldr = olNs.GetSharedDefaultFolder(olShareName, olFolderInbox)
If ThisWorkbook.Worksheets("EPI_Data").Range("I5") = "Inbox" Then
Set MyFolder = olFldr
MsgBox (MyFolder)
ElseIf ThisWorkbook.Worksheets("EPI_Data").Range("I5") = "Feasibilities" Then
Set MyFolder = olFldr.Folders("Feasibilities")
MsgBox (MyFolder)
ElseIf ThisWorkbook.Worksheets("EPI_Data").Range("I5") = "FNC's" Then
Set MyFolder = olFldr.Folders("Feasibilities").Folders("FNC's")
MsgBox (MyFolder)
ElseIf ThisWorkbook.Worksheets("EPI_Data").Range("I5") = "ISAs - Actioned" Then
Set MyFolder = olFldr.Folders("Feasibilities").Folders("ISAs - Actioned")
MsgBox (MyFolder)
End If
Set olItem = MyFolder.Items
'Set myRestrictItems = olItem.Restrict("[ReceivedTime]>'" & Format$("01/01/2019 00:00AM", "General Date") & "' And [ReceivedTime]<'" & Format$("01/02/2019 00:00AM", "General Date") & "'")
Set myRestrictItems = MyFolder.Items.Restrict("[ReceivedTime]>'" & Format$(val1, "General Date") & "' And [ReceivedTime]<'" & Format$(val2, "General Date") & "'")
For Each olItem In myRestrictItems
If olItem.Class = olMail Then
Set propertyAccessor = olItem.propertyAccessor
Subject = propertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0E1D001E")
If dic.Exists(Subject) Then dic(Subject) = dic(Subject) + 1 Else dic(Subject) = 1
End If
Next olItem
With ActiveSheet
.Columns("A:B").Clear
.Range("A1:B1").Value = Array("Count", "Subject")
For i = 0 To dic.Count - 1
.Cells(i + 2, "A") = dic.Items()(i)
.Cells(i + 2, "B") = dic.Keys()(i)
Next
End With
End Sub
subcountinboxsubjects()
Dim olApp作为Outlook.Application
将OLN设置为Outlook.Namespace
将olFldr设置为Outlook.Mapi文件夹
将MyFolder设置为Outlook.MAPIFolder
将MyFolder1设置为Outlook.MAPIFolder
将MyFolder2设置为Outlook.MAPIFolder
将MyFolder3设置为Outlook.MAPIFolder
将olMailItem设置为Outlook.MailItem
将propertyAccessor设置为Outlook.propertyAccessor
作为对象
'我是Outlook.Items
词典
我想我会坚持多久
模糊主题为字符串
Dim val1作为变体
Dim val2作为变体
val1=此工作簿。工作表(“EPI_数据”)。范围(“I2”)
val2=此工作簿。工作表(“EPI_数据”)。范围(“I3”)
Set olApp=newoutlook.Application
Set olNs=olApp.GetNamespace(“MAPI”)
'设置olFldr=olNs.GetDefaultFolder(olFolderInbox)
设置olShareName=olNs.CreateRecipient(“F0400602@email.com")
设置olFldr=olNs.GetSharedDefaultFolder(olShareName,olFolderInbox)
如果此工作簿.工作表(“EPI_数据”).范围(“I5”)=收件箱,则
设置MyFolder=olFldr
MsgBox(我的文件夹)
否则,此工作簿。工作表(“EPI_数据”)。范围(“I5”)=“可行性”
设置MyFolder=olFldr.Folders(“可行性”)
MsgBox(我的文件夹)
否则,此工作簿。工作表(“EPI_数据”)。范围(“I5”)=“FNC”然后
设置MyFolder=olFldr.Folders(“可行性”).Folders(“FNC”)
MsgBox(我的文件夹)
否则,此工作簿。工作表(“EPI_数据”)。范围(“I5”)=“ISAs-已执行”然后
设置MyFolder=olFldr.Folders(“可行性”).Folders(“ISAs-已采取行动”)
MsgBox(我的文件夹)
如果结束
Set-olItem=MyFolder.Items
“设置myRestrictItems=olItem.Restrict(“[ReceivedTime]>”)和“[ReceivedTime]”和“[ReceivedTime]”格式$(val1,“General Date”)&“,[ReceivedTime]使用Dim olitems作为Outlook.Items或切换设置myRestrictItems=myfolder.Items
Items属性包含文件夹中Outlook项目对象的集合
范例
选项显式
subcountinboxsubjects()
Dim olApp作为Outlook.Application
Set olApp=newoutlook.Application
将OLN设置为Outlook.Namespace
Set olNs=olApp.GetNamespace(“MAPI”)
将ShareName设置为Outlook.Recipient
设置olShareName=olNs.CreateRecipient(“email@email.com")
将olFldr设置为Outlook.Mapi文件夹
设置olFldr=olNs.GetSharedDefaultFolder(olShareName,olFolderInbox)
将myRestrictItems暗显为Outlook.Items
设置myRestrictItems=olFldr.Items.Restrict(“[ReceivedTime]>”)&Format$(val1,“General Date”)&_
“'和[ReceivedTime]我尝试了A)使用Dim.Items作为Outlook.Items,但它不起作用,仍然给我运行时错误5 B)切换到设置myRestrictItems=myfolder.Items,我不能这样做,因为我需要用它来限制特定时间范围内的搜索。@lyricZZ好的,试试这个-删除Set-olItem=MyFolder.Items
现在将myRestrictItems
修改为Set-myRestrictItems=MyFolder.Items.restrict([ReceivedTime]>”&Format$(val1,“General Date”)&“)和[ReceivedTime]@lyricZZ让我知道。看起来它通过了,但新的错误显示Rum时间错误“91”显示…“对象变量或未设置块变量”。我相信这是由“对于myRestrictItems中的每个olItem”造成的,而olItem未定义,我尝试用MyFolder.Items In“对于myRestrictItems中的每个olItem”替换olItem“而且它不会工作。报告错误编译错误:需要变量-无法分配给此表达式。”。
Option Explicit
Sub CountInboxSubjects()
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
Dim olNs As Outlook.Namespace
Set olNs = olApp.GetNamespace("MAPI")
Dim olShareName As Outlook.Recipient
Set olShareName = olNs.CreateRecipient("email@email.com")
Dim olFldr As Outlook.MAPIFolder
Set olFldr = olNs.GetSharedDefaultFolder(olShareName, olFolderInbox)
Dim myRestrictItems As Outlook.Items
Set myRestrictItems = olFldr.Items.Restrict("[ReceivedTime]>'" & Format$(val1, "General Date") & _
"' And [ReceivedTime]<'" & Format$(val2, "General Date") & "'")
Dim olItem As Object
Dim lng As Long
For lng = myRestrictItems.Count To 1 Step -1
Set olItem = myRestrictItems(lng)
If olItem.Class = olMail Then
Debug.Print olItem.Subject
End If
Next
End Sub