【发布时间】:2022-06-13 11:31:17
【问题描述】:
我想用标志标记所有超过三天的未答复电子邮件,并将它们移动到名为“mini”的文件夹中。来源是“Posteingang”(收件箱的德语)。
Sub Mails_verschieben()
Set myaccount = Application.GetNamespace("MAPI").DefaultStore
Set mynamespace = Application.GetNamespace("MAPI")
Dim ursprung As MAPIFolder
Dim ziel As MAPIFolder
Set ursprung = Session.Folders(myaccount.DisplayName).Folders("Posteingang")
Set ziel = Session.Folders(myaccount.DisplayName).Folders("mini")
For i = ursprung.Items.Count To 1 Step -1 'alle emails im Postfach durchgehen
With ursprung.Items(i)
If .ReceivedTime < Date - 3 And ursprung.Items(i) = .LastModificationTime Then
.FlagIcon = 5
.FlagStatus = olFlagMarked
.Save
ursprung.Items(i).Move ziel 'in Ordner verschieben
End If
End With
Next i
End Sub
我明白了
对象不支持此属性或方法
在
If .ReceivedTime < Date - 3 And ursprung.Items(i) = .LastModificationTime Then
我也想自动运行这个脚本,但什么也没找到。
我修改了我的代码:
Sub Mails_verschieben()
Set myaccount = Application.GetNamespace("MAPI").DefaultStore
Set mynamespace = Application.GetNamespace("MAPI")
Dim ursprung As MAPIFolder
Dim ziel As MAPIFolder
Dim MailX As MailItem
Set ursprung = mynamespace.GetDefaultFolder(olFolderInbox)
Set ziel = Session.Folders(myaccount.DisplayName).Folders("mini")
For i = ursprung.Items.Count To 1 Step -1 'alle emails im Postfach durchgehen
For Each MailX In ursprung.Items(i)
If MailX.ReceivedTime < Date - 3 And ursprung.Items(i) = MailX.LastModificationTime Then
MailX.FlagIcon = 5
MailX.FlagStatus = olFlagMarked
MailX.Save
ursprung.Items(i).Move ziel 'in Ordner verschieben
End If
Next
Next i
End Sub
同样出现错误。
【问题讨论】:
-
ursprung.Items(i)是你的循环。当您在后续行中访问它的属性时,这与ursprung.Items(i) = .LastModificationTime相比如何?你是说mailitem = date??? -
您能进一步解释一下吗?我完全是初学者。
-
在访问
MailItem特定属性之前,您需要确保您实际处理的是邮件项目。有关更多信息,请参阅我的帖子。