该脚本不存在或无效

时间:2015-03-07 22:10:14

标签: vba outlook

我在堆栈溢出时发现此代码,我正在尝试使用它来打开Internet Explorer,其中包含来自特定地址的电子邮件中的链接(我为此创建了一条规则)。

当我尝试运行它时,我收到以下错误:"脚本不存在或无效。"。我正在使用Microsoft Outlook 2010。

Sub LaunchURL(itm As MailItem)

    Dim bodyString As String
    Dim bodyStringSplitLine
    Dim bodyStringSplitWord
    Dim splitLine
    Dim splitWord

    bodyString = itm.Body
    bodyStringSplitLine = Split(bodyString, vbCrLf)

    For Each splitLine In bodyStringSplitLine
        bodyStringSplitWord = Split(splitLine, " ")

        For Each splitWord In bodyStringSplitWord
            If Left(splitWord, 7) = "http://" Then
               Shell ("C:\Program Files (x86)\Internet Explorer\iexplore.exe" & " " & splitWord)

            End If
        Next

    Next

    Set itm = Nothing

End Sub

Private Sub test()
    Dim currItem As MailItem
    Set currItem = ActiveInspector.CurrentItem
    LaunchURL currItem
End Sub

1 个答案:

答案 0 :(得分:0)

首先,脚本是错误的。您尝试在Web浏览器中打开邮件正文中的每个单词。您需要找到一个真实的URL。

您需要使用Outlook项目的HTMLBody属性来获取表示指定项目的HTML正文的字符串。然后,您可以查找<a href=代码。只有在这种情况下,您才能获取URL并在浏览器中运行它。

此外,作为解决方法,您可以考虑使用Word对象模型。 Inspector类的WordEditor属性返回表示消息正文的Document类的实例。然后,您可以使用Document类的Hyperlinks属性,该属性返回表示指定文档中所有超链接的Hyperlinks集合。例如:

For Each aHyperlink In document.Hyperlinks 
   If InStr(LCase(aHyperlink.Address), "microsoft") <> 0 Then  
     MsgBox aHyperlink.Name 
   End If 
Next aHyperlink

有关详细信息,请参阅Chapter 17: Working with Item Bodies

无需在机器上指定IE的路径。例如,您可以使用以下代码:

  

Shell(splitWord)

将打开默认的Web浏览器。此外,IE的路径可能是错误的,取决于机器(x86或x64)。

最后,您可能会发现Getting Started with VBA in Outlook 2010文章有用。