我在堆栈溢出时发现此代码,我正在尝试使用它来打开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
答案 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文章有用。