控件已从excel VBA创建Outlook邮件

控件已从excel VBA创建Outlook邮件,vba,outlook,Vba,Outlook,长期读者,第一次信使(虽然不是我第一次开坏玩笑) 我想知道是否有可能控制已创建的Outlook电子邮件。在工作中,我们必须从一个安全的网站下载新的工单,这主要归功于这个网站,我已经能够设置一个宏来登录,找到新的工单,然后单击按钮打开工单。单击此按钮后,将打开一个带有pdf文件的新IE窗口,“通过电子邮件发送页面”命令用于创建新的outlook邮件。我有outlook 12参考(使用Office 2007),并且能够控制现有outlook会话以使用以下工具创建新电子邮件: Dim SendOrde

长期读者,第一次信使(虽然不是我第一次开坏玩笑)

我想知道是否有可能控制已创建的Outlook电子邮件。在工作中,我们必须从一个安全的网站下载新的工单,这主要归功于这个网站,我已经能够设置一个宏来登录,找到新的工单,然后单击按钮打开工单。单击此按钮后,将打开一个带有pdf文件的新IE窗口,“通过电子邮件发送页面”命令用于创建新的outlook邮件。我有outlook 12参考(使用Office 2007),并且能够控制现有outlook会话以使用以下工具创建新电子邮件:

Dim SendOrder As Outlook.Application
Set SendOrder = GetObject(, "Outlook.Application")

但我不知道如何让它控制IE打开的电子邮件。我尝试使用GetObject(,“Outlook.Application.MailItem”),和其他一些失败的想法,但我只有3个想法,所以我希望这里的人能帮我解决这个问题,否则我可能不得不将文件保存在IE中并创建一个新的电子邮件消息,这似乎是添加了一个额外的步骤。

我想你走的路是对的。类似这样的方法适用于从Outlook打开的Outlook邮件项目.不过,我还没有在从IE打开的邮件上测试过它

Sub GetAMailItem()

'## Requires reference to MS Outlook object library ##
Dim oApp As Outlook.Application
Dim mItem As MailItem

Set oApp = GetObject(, "Outlook.Application")

If TypeName(oApp.ActiveWindow) = "Inspector" Then
    Set mItem = oApp.ActiveWindow.CurrentItem
End If

Set oApp = Nothing

End Sub

找到了该代码的精髓,只做了一两次修改,为您提供了一个符合您需要的结构化示例。

您有机会尝试我的建议答案吗?ActiveWindow.CurrentItem成功了,非常感谢您的帮助!