VBA打开Outlook电子邮件中的第一个链接然后是下一个链接

时间:2015-01-23 13:44:43

标签: vba email excel-vba hyperlink outlook

如果可能的话,请告诉我这个或整个事情的部分内容。我基本上每天早上都有一个电子邮件,有5-8个链接到报告(在Sharepoint上),并且必须单击每个,然后打开带有报告的Excel文档,单击全部刷新,保存然后返回到Outlook并单击下一个链接。有没有办法在Outlook中打开第一个链接,转到Excel全部刷新,保存,然后返回到Outlook并打开下一个链接并重复,直到在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

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

3 个答案:

答案 0 :(得分:0)

您可以处理Application类的NewMailEx事件来处理所有传入的电子邮件。然后在事件处理程序中,您可以解析HTMLBody属性值并提取链接。然后你可以用链接做任何你想做的事 - 在浏览器中打开它们等等。

我建议从MSDN中的Getting Started with VBA in Outlook 2010文章开始。然后你可以在Concepts (Outlook 2013 developer reference)部分找到很多HOWTO文章。

答案 1 :(得分:0)

您的问题有点太大,虽然不太困难,但它涉及多个对象库引用(正则表达式,Internet Explorer,Excel)。您不太可能获得问题的完整解决方案。 VBA是一种非常强大而且很酷的脚本语言,并且不难学习。我强烈建议您将问题分成较小的任务,并尝试单独完成每项任务,然后回答更具体的问题。

答案 2 :(得分:0)

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