2011-06-01 88 views
4

任务是在我的腿上扔,需要我:自动运行Outlook

  1. 迭代经过很多(1000年),邮件文件夹,在Outlook 2010
  2. 在一个特定的子文件夹中的每个文件夹,用鼠标右键单击菜单,选择导出为pdf(这是一个插件“DocumentExporter”),然后单击确定按钮

我很少使用outlook,所以我从来没有将它自动化到这种程度。我发现你可以用vba做,也可能.net(我已经安装了.net可编程扩展)

有关最快捷方式的任何建议吗?

谢谢!

+1

“DocumentExporter”是否公开了您可以在VBA中使用的任何COM API?因为,如果你真的必须通过上下文菜单自动化你的方式,这将变得非常难看。 – Tomalak 2011-06-01 21:28:01

+0

谢谢,我没有提到 - 没有COM接口,我希望这会是因为我完全同意它会变得丑陋 - 这就是为什么我提出这个问题:-P – Jubal 2011-06-01 21:40:04

+0

好的,在这种情况下,这将会归结为SendKeys , 然后。 – Tomalak 2011-06-01 21:50:17

回答

2

我没有Outlook,所以下面是air-code。

Sub DoIt() 
    Recurse ActiveExplorer.CurrentFolder ' select relevant folder in Outlook first 
End Sub 

Sub Recurse(f as MAPIFolder) 
    Dim sf As MAPIFolder 

    PrintPdf 

    For Each sf In f.Folders 
    ' open a potential sub-tree of folders, and move down one folder in the UI 
    SendKeys "{RIGHT}{PAUSE 100}{DOWN}" 
    Recurse sf 
    Next f 
End Sub 

Sub PrintPdf() 
    ' open the context menu, go down 4 entries, press enter, wait 10 seconds 
    SendKeys "{APP}{PAUSE 100}{DOWN 4}{ENTER}{PAUSE 10000}" 
End Sub 

我不知道这是否会工作,它只是一个想法。确保Outlook在运行时处于前台状态(通过将DoIt()例程分配给自定义工具栏按钮)。在开始之前,必须先选择起始文件夹。

+0

谢谢 - 基本上我是这样做的,在查看这个http://www.codeproject.com/KB/cs/SendKeys.aspx – Jubal 2011-06-01 23:43:26

+1

+1以获得“Air Code”中的答案之后。这不应该是一个徽章? – ray 2011-06-02 00:03:51

+1

我因发送密钥而遇到各种问题,只好从codeplex切换到inputsimulator库,它的工作更加可靠 – Jubal 2011-06-02 04:27:39

0

VBA或.NET都是办公自动化的不错选择,但.NET更具前景。

如果您打算现在或将来自动化办公室64位,您必须使用.NET!