2015-01-21 69 views
0

我设计一个QTP框架,其中自动化工程师,以便开始测试套件执行(该电子邮件可以使用MS Outlook中安排)如何引用触发outlook宏的邮件?

一旦触发邮件被接收,发送电子邮件附件应下载和QTP应该是启动(自动),使用适当的设置,由展望宏

但在上述情况下我要下载的邮件的附件和移动邮件从而引发了不同的文件夹宏。

有什么办法可以引用触发宏的邮件吗?

目前这是我正在做的。

Sub TestSuiteInitialilzer(mail As Outlook.MailItem) 
 
    Set ns = Application.GetNamespace("MAPI") 
 
    Set Inbox = ns.GetDefaultFolder(olFolderInbox) 
 
    Set objDestFolder = Inbox.Folders("RAN") 
 
    FileName = "C:\Email Attachments\" & mail.Attachments.Item.FileName 
 
    'Download the attachment 
 
    Atmt.SaveAsFile FileName 
 
    'Move the mail to another folder 
 
    mail.Move objDestFolder 
 
    launchQTP = "C:\Unlock.vbs" 
 
    Set objShell = CreateObject("WScript.Shell") 
 
    ‘Launch QTP 
 
    objShell.Run launchQTP 
 
    objShell = Nothing 
 
End Sub

+1

你是如何设置触发器的?很可能您可以使用'.EntryID'在Outlook中引用任何项目。如果您使用应用程序级事件触发器执行宏,请阅读http://www.slipstick.com/developer/processing-incoming-e-mails-with-macros/ – PatricK 2015-01-21 05:49:19

+0

邮件是触发器。自动化工程师发送电子邮件以启动测试套件执行。邮件将有一个特定的主题,例如'RunQTPMasterDriverScript'和一个附件,其中包含测试脚本和运行指示器的路径。创建Outlook中的规则以监视收件箱,并在主题为“RunQTPMasterDriverScript”的邮件到达时调用宏。该宏应该下载附件,将邮件从一个文件夹移动到另一个文件夹。 – 2015-01-21 08:23:21

+0

我希望宏下载附件并将邮件从一个文件夹移动到另一个文件夹。这怎么能实现?任何形式的帮助都非常感谢。 – 2015-01-21 08:29:26

回答

0

跳过检查整个收件箱直到匹配的两个步骤。保持你的身份,以防万一你需要为第一个匹配项目手动运行它。

1)添加以下代码(改为使用Cscript.exe):

Sub TestSuiteInitialilzer_Rules(ByRef oMail As MailItem) 
    Const FileName = "C:\Email Attachments\" 
    For Each Atmt In oMail.Attachments 
     'Download the attachment 
     Atmt.SaveAsFile FileName & Atmt.Filename 
    Next Atmt 
    ' Move the Mail to objDestFolder 
    oMail.Move objDestFolder 
    'launchQTP = "C:\Unlock.vbs" 
    launchQTP = "cscript.exe //nologo C:\Unlock.vbs" 
    Set objShell = CreateObject("WScript.Shell") 
    'QTP will be launched with the neccassary configurations through the vb script 
    objShell.Run launchQTP 
    Set objShell = Nothing 
End Sub 

2)对现有设备的顶部添加展望规则(在我收到的邮件应用规则)。最好关闭你现有的一个。

OutlookRule

+0

非常感谢您的回复!为什么我们需要cscript?我们不能通过宏使用WShell对象的VBS文件吗?每当我尝试运行代码时,VBA都会告诉我创建一个新的宏。我想这是由于传递的参数。你知道这里有什么问题吗? – 2015-01-22 05:32:04

+0

由于我不知道vbs文件中有什么,如果它使用wscript.echo,cscript会显示它并让代码运行。 wscript会暂停,直到按下OK。你不能有2个相同的名字。将“_Rule”添加到新的。 – PatricK 2015-01-22 05:45:29

+0

好的。当Outlook重新启动或将自动关联时,我能做些什么将宏与规则相关联(并激活规则)? – 2015-01-22 06:19:40

0

你只需要定义它接受的MailItem作为参数VBA宏子。源对象将被传递给子,并且您不需要在收件箱文件夹中搜索它。例如:

Public Sub Text(mail as Outlook.MailItem) 
    ' do something with the mail object 
End Sub 

您可以访问使用附件的MailItem类财产附件。 移动方法允许将项目移动到另一个文件夹。

+0

邮件为Outlook.MailItem - 在此声明中,“邮件”是指引发宏的邮件项目吗? – 2015-01-21 14:31:01

+0

是的,你在正确的道路上。 – 2015-01-21 14:38:17

+0

非常感谢您的回复!我已经给出了我目前使用的描述中的代码,但我不知道它是否工作正常!每当我尝试运行代码时,VBA都会告诉我创建一个新的宏。我想这是由于传递的参数。你知道这里有什么问题吗? – 2015-01-22 05:32:46

相关问题