我正在尝试编写一段代码,该代码从活动资源管理器中获取用户选择的项目列表(通常是mailitems),对它们执行某些操作(例如设置自定义字段的值),然后 - 当完成 - 选择资源管理器窗口中的下一个项目并在那里结束执行。
示例......
- >完成后,我希望选择项目#8
这可能吗?
皱纹,为什么我不能在最后使用SendKeys“{DOWN}”语句:活动视图按自定义字段分组(...称之为标志,为便于参考) - 其中flag = false显示在组#1的屏幕顶部,而flag = true显示在屏幕底部的组#2中。这是一种将邮件项目降级为“地下室”的方式,不删除它们或不必将它们移动到其他文件夹中。他们留在收件箱中,但是单独分组,看不到。
对第1,4和7项执行的操作包括将标志设置为TRUE,从而使项目从屏幕的上半部分消失,并移动到屏幕的下半部分(即在组#中) 2)。这一切都很有效。
...直到代码到达选择中的最后一项,并再次执行它需要做的事情并结束......但此时,在资源管理器窗口中显示的活动/选定邮件项目是相同的last mailitem(#7)。因此,用户现在在组#2的收件箱中看到了一个mailitem。换句话说,用户现在位于收件箱的地下室,而不是顶部,因为Outlook正在显示选择中的最后一个邮件项目,该邮件项目已被代码移动到地下室。
我希望代码将活动/选定的mailitem更改为#8(对于我正在设置的自定义字段,其值仍然为FALSE),以便在完成代码执行后,屏幕位置保持在原来的位置代码执行时。
我唯一能做的就是在最后应用SendKeys“{HOME}”,所以至少用户的视图会继续显示组#1中的邮件项目......但不是正确的mailitem。< / p>
我真的很难过。
任何帮助都将不胜感激。
NB&GT;在启动代码时,我的思考过程是识别选择中的最后一个邮件项目(...通过索引#或通过EntryID) - 我可以很容易地做到这一点 - 但后来以某种方式找到了一种方法i)在紧随其后找到NEXT mailitem,并存储此引用,然后ii)完成代码后,获取outlook以选择保存参考ID的mailitem。我无法弄清楚如何做到这一点。
由于
答案 0 :(得分:0)
如果收到的时间按某种顺序排列,您可以使用它来确定要选择的下一个项目。
这个过程看起来像这样。
selCount = ActiveExplorer.Selection.Count
' Assumes you select downwards not randomly
minRecTime = ActiveExplorer.Selection(selCount).ReceivedTime
物品移动后,循环向下穿过物品。
currRecTime = currFolder.items(i).ReceivedTime
If currRecTime < minRecTime Then
Exit For
End If
现在你的职位是&#34;我&#34;。
请记住从按钮而不是VB编辑器运行以查看SendKeys的工作。
SendKeys "{HOME}"
For j = 1 To i - 1
SendKeys "{DOWN}"
Next j