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
如果可能的话,请就这件事的一部分或整个事情给我一些建议。我基本上每天早上都会收到一封电子邮件,其中包含 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