首页 文章

以编程方式更改 Outlook 中的选定项目

提问于
浏览
1

我正在尝试编写一段代码,以从活动资源管理器中获取 user-selected 个项目(通常为 mailitems)列表,对它们执行一些操作(e.g. 设置自定义字段的值),然后-完成时选择资源管理器窗口中的下一项,并在那里结束执行。

  • 确定所选项目列表没有问题

  • 我没有问题遍历所选项目并在每个项目上执行所需的操作

  • 但是我无法终生确定完成以上过程后如何以编程方式在浏览器窗口中选择下一个项目(请记住,下一个项目是 user-selected 项列表中的NOT)。

例子...

  • 收件箱中有 10 件物品

  • 用户选择项目 1、4 和 7

  • 代码将项目 1、4 和 7 标识为活动选择

  • 代码对项目 1、4 和 7 执行操作

->完成后,我希望选择项目#8

这可能吗 ???

皱纹,以及为什么我不能只在末尾使用 SendKeys“ {。1}”语句:活动视图按自定义字段分组(...称为标记,为便于参考)-其中 flag=false 显示在#1 组的屏幕顶部,而 flag=true 显示在屏幕底部的#2 组。这是一种将邮件项目委派为某种“地下室”的方法,而无需删除它们或将其移至其他文件夹。它们保留在收件箱中,但在看不见的情况下单独分组。

在项目 1、4 和 7 上执行的操作包括将标志设置为 TRUE,从而使这些项目从屏幕的上部消失,然后移动到屏幕的下部(组#2 中的 i.e.)。 。这一切都很好。

...直到代码到达选择中的最后一项,然后再次执行所需的操作,然后结束......但此时,资源管理器窗口中显示的 active/selected mailitem 与最后一个 mailitem 是相同的(#7 )。因此,用户现在在第 2 组的收件箱中看到一个邮件项。换句话说,用户现在位于收件箱的地下室中,而不是位于顶部,因为 Outlook 正在显示所选内容中的最后一个 mailitem,该项目已被代码移至地下室中。

我希望代码将 active/selected mailitem 更改为#8(对于我正在设置的自定义字段,其值仍为 FALSE),以便在执行代码后,屏幕位置仍保持在执行代码时的位置。

我唯一要做的是在末尾应用 SendKeys“ {。2}”,因此至少用户的视图继续显示组#1 中的邮件项,但是没有正确的邮件项。

我真的很在这里

任何帮助,将不胜感激。

注意:我的思维过程是,在启动代码时,确定选择中的最后一个 mailitem(...通过索引号或 EntryID)-我可以很容易地做到这一点-但后来以某种方式找到了一种方法 i)找到紧随其后的 NEXT mailitem,并存储此引用,然后 ii)完成代码后,获取 Outlook 以选择具有我保存的引用 ID 的 mailitem。我不知道该怎么做。

谢谢

1 回答

  • 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
    

    现在,您的职位为“ i”。

    请记住从按钮而不是 VB 编辑器运行以查看 SendKeys 的工作。

    SendKeys "{HOME}"
    
    For j = 1 To i - 1
    
        SendKeys "{DOWN}"
    
    Next j
    

相关问题