如果可能的话,请告诉我这个或整个事情的部分内容。我基本上每天早上都有一个电子邮件,有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
这是我到目前为止所提出的。绝对包含错误。我最后只是运行子测试()。
答案 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