如何在电子邮件到达时启动URL

时间:2009-03-06 14:41:05

标签: vba outlook outlook-vba shellexecute

我想在电子邮件到达Outlook时启动一个URL。我设置了一个规则并让它触发脚本功能。看起来我想调用ShellExecute在浏览器中启动URL,但是当我点击这一行时:

    ShellExecute(0&, "open", URL, vbNullString, vbNullString, _
vbNormalFocus)

该方法未定义。有什么想法吗?

5 个答案:

答案 0 :(得分:4)

ShellExecute是windows dll中的一个函数。 您需要在VBA模块中为此添加声明:

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long      

Shell解决方案和ShellExecute之间的区别在于ShellExecute将使用URL的默认系统处理程序来打开链接。这不一定是IE。您的解决方案将始终在IE中打开它。你的相当于将iexplore.exe放入windows中的运行框中。 ShellExecute相当于只将url放在windows中的运行框中。

答案 1 :(得分:2)

您还可以使用VBA中的Followhyperlink在默认浏览器中打开网址。它还可用于打开已注册应用程序的文档,发送电子邮件和浏览文件夹。

答案 2 :(得分:1)

或者,使用Shell,如下所示:

Sub LaunchURL(Item As Outlook.MailItem)
    Shell ("C:\Program Files\Internet Explorer\IEXPLORE.EXE" & " " & Item.Body)
End Sub

答案 3 :(得分:1)

您可以在此处创建批处理文件:

start http://someurl.com/?a=1^&b=2

并配置Outlook规则以启动此批处理文件。在&之前注意^符号。这是&的转义序列。在批处理文件中。另请注意,您需要在Windows操作系统中设置默认浏览器,几乎百分之百的可能性。

答案 4 :(得分:1)

Shell ("CMD /C start http://www.spamcop.net"), vbNormalFocus