【问题标题】:How to launch a URL when an email arrives如何在电子邮件到达时启动 URL
【发布时间】:2010-10-11 18:28:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: vba outlook shellexecute


    【解决方案1】:

    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 的运行框中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        或者,使用Shell,像这样:

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

        【讨论】:

          【解决方案4】:

          你可以在你写这个的地方创建批处理文件:

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

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

          【讨论】:

            【解决方案5】:
            Shell ("CMD /C start http://www.spamcop.net"), vbNormalFocus
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-07-19
              • 1970-01-01
              • 2010-11-24
              • 2011-12-22
              • 1970-01-01
              • 2011-02-18
              • 2015-09-18
              • 2013-02-20
              相关资源
              最近更新 更多