VBA 打开 Outlook 电子邮件中的第一个 link,然后打开下一个 link

VBA to open the first link in the Outlook email then the next link

如果可能的话,请就这件事的一部分或整个事情给我一些建议。我基本上每天早上都会收到一封电子邮件,其中包含 5-8 link 秒的报告(在 Sharepoint 上)并且必须单击每一个,然后打开一个包含报告的 excel 文档,单击全部刷新,然后保存返回 outlook 并单击下一步 link。有没有办法在 Outlook 中打开第一个 link,转到 excel 刷新所有,保存,然后返回 Outlook 并打开下一个 link 并重复直到所有 links 已被按下 VBA?非常感谢任何帮助,谢谢。

Function GetCurrentItem() As Object
Dim objApp As Outlook.Application

Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
    Case "Explorer"
        Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
        Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select

Set objApp = Nothing
End Function

Sub Hyperlink(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
        splitWord.Hyperlink.Select
    Next
Next
Set itm = Nothing
End Sub

Sub test()
Dim currItem As MailItem
Set currItem = GetCurrentItem
Hyperlink currItem
End Sub

这是我到目前为止的想法。绝对包含错误。最后我只是运行子测试()。

您可以处理 NewMailEx event of the Application class to handle all incoming emails. Then in the event handler you can parse the HTMLBody 属性 值并提取链接。然后你可以用链接做任何你想做的事——在浏览器中打开它们等等。

我建议从 Getting Started with VBA in Outlook 2010 article in MSDN. Then you may find a lot of HOWTO articles in the Concepts (Outlook 2013 developer reference) 部分开始。

你的问题有点大,虽然难度不大,但涉及到多个对象库引用(正则表达式,Internet Explorer,Excel)。您不太可能获得问题的完整解决方案。 VBA 是一种非常强大和酷的脚本语言,而且不太难学。我强烈建议您将问题分成更小的任务,并尝试分别处理每个任务,然后再回来提出更具体的问题。

Word中有一个.Follow.

Sub Hyperlink(itm As mailitem)

Dim oDoc As Object
Dim h As Hyperlink

If itm.GetInspector.EditorType = olEditorWord Then

    Set oDoc = itm.GetInspector.WordEditor

    For Each h In oDoc.Hyperlinks
        Debug.Print h.Name
        If Right(h.Name, 5) = ".xlsx" Then
            h.Follow
        End If
    Next

End If

Set oDoc = Nothing

End Sub