跳到主要內容

Outlook:如何從一封電子郵件中提取所有 URL

作者:孫 最後修改時間:2022-04-29

如果一封電子郵件包含數百個需要提取到文本文件的 URL,那麼逐個複制和粘貼將是一項繁瑣的工作。 本教程介紹了可以快速從電子郵件中提取所有 URL 的 VBA。

VBA 從一封電子郵件中提取 URL 到文本文件

VBA 從多封電子郵件中提取 URL 到 Excel 文件

Office 標籤 - 在 Microsoft Office 中啟用選項卡式編輯和瀏覽,讓工作變得輕而易舉
Kutools for Outlook - 透過 100 多個進階功能增強 Outlook,實現卓越效率
使用這些進階功能增強您的 Outlook 2021 - 2010 或 Outlook 365。 享受全面的 60 天免費試用並提升您的電子郵件體驗!

VBA 從一封電子郵件中提取 URL 到文本文件

 

1. 選擇您要提取 URL 的電子郵件,然後按 其他 + F11 啟用鍵 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊 創建一個新的空白模塊,然後將以下代碼複製並粘貼到模塊中。

VBA:將一封電子郵件中的所有 URL 提取到文本文件中。

Sub ExportUrlToTextFileFromEmail()
'UpdatebyExtendoffice20220413
  Dim xMail As Outlook.MailItem
  Dim xRegExp As RegExp
  Dim xMatchCollection As MatchCollection
  Dim xMatch As Match
  Dim xUrl As String, xSubject As String, xFileName As String
  Dim xFs As FileSystemObject
  Dim xTextFile As Object
  Dim i As Integer
  Dim InvalidArr
  On Error Resume Next
  If Application.ActiveWindow.Class = olInspector Then
    Set xMail = ActiveInspector.CurrentItem
  ElseIf Application.ActiveWindow.Class = olExplorer Then
    Set xMail = ActiveExplorer.Selection.Item(1)
  End If
  Set xRegExp = New RegExp
  With xRegExp
    .Pattern = "(https?[:]//([0-9a-z=\?:/\.&-^!#$;_])*)"
    .Global = True
    .IgnoreCase = True
  End With
  If xRegExp.test(xMail.Body) Then
    InvalidArr = Array("/", "\", "*", ":", Chr(34), "?", "<", ">", "|")
    xSubject = xMail.Subject
    For i = 0 To UBound(InvalidArr)
      xSubject = VBA.Replace(xSubject, InvalidArr(i), "")
    Next i
    xFileName = "C:\Users\Public\Downloads\" & xSubject & ".txt"
    Set xFs = CreateObject("Scripting.FileSystemObject")
    Set xTextFile = xFs.CreateTextFile(xFileName, True)
    xTextFile.WriteLine ("Export URLs:" & vbCrLf)
    Set xMatchCollection = xRegExp.Execute(xMail.Body)
    i = 0
    For Each xMatch In xMatchCollection
      xUrl = xMatch.SubMatches(0)
      i = i + 1
      xTextFile.WriteLine (i & ". " & xUrl & vbCrLf)
    Next
    xTextFile.Close
    Set xTextFile = Nothing
    Set xMatchCollection = Nothing
    Set xFs = Nothing
    Set xFolderItem = CreateObject("Shell.Application").NameSpace(0).ParseName(xFileName)
    xFolderItem.InvokeVerbEx ("open")
    Set xFolderItem = Nothing
  End If
  Set xRegExp = Nothing
End Sub

在此代碼中,它將創建一個以電子郵件主題命名並放置在路徑中的新文本文件: C:\用戶\公共\下載,您可以根據需要更改它。

文檔提取網址 1

3。 點擊 工具 > 參考 啟用 參考 - 項目 1 對話框,勾選 Microsoft VBScript正則表達式5.5 複選框。 點擊 OK.

文檔提取網址 1

文檔提取網址 1

4。 按 F5 鍵或單擊 按鈕運行代碼,現在會彈出一個文本文件,其中所有 URL 都已提取。

文檔提取網址 1

文檔提取網址 1

備註:如果您是 Outlook 2010 和 Outlook 365 的用戶,請同時在步驟 3 中勾選 Windows 腳本宿主對像模型複選框。然後單擊確定。


VBA 從多封電子郵件中提取 URL 到 Excel 文件

 

如果您想從多個選定的電子郵件中提取 URL 到 Excel 文件,下面的 VBA 代碼可以幫助您。

1. 選擇您要提取 URL 的電子郵件,然後按 其他 + F11 啟用鍵 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊 創建一個新的空白模塊,然後將以下代碼複製並粘貼到模塊中。

VBA:將多封電子郵件中的所有 URL 提取到 Excel 文件中

'UpdatebyExtendoffice20220414
Dim xExcel As Excel.Application
Dim xExcelWb As Excel.Workbook
Dim xExcelWs As Excel.Worksheet

Sub ExportAllUrlsToExcelFromMultipleEmails()
  Dim xMail As MailItem
  Dim xSelection As Selection
  Dim xWordDoc As Word.Document
  Dim xHyperlink As Word.Hyperlink
  On Error Resume Next
  Set xSelection = Outlook.Application.ActiveExplorer.Selection
  If (xSelection Is Nothing) Then Exit Sub
  Set xExcel = CreateObject("Excel.Application")
  Set xExcelWb = xExcel.Workbooks.Add
  Set xExcelWs = xExcelWb.Sheets(1)
  xExcelWb.Activate
  With xExcelWs
    .Range("A1") = "Subject"
    .Range("B1") = "DisplayText"
    .Range("C1") = "Link"
  End With
  With xExcelWs.Range("A1", "C1").Font
    .Bold = True
    .Size = 12
  End With
  For Each xMail In xSelection
    Set xWordDoc = xMail.GetInspector.WordEditor
    If xWordDoc.Hyperlinks.Count > 0 Then
      For Each xHyperlink In xWordDoc.Hyperlinks
          Call ExportToExcelFile(xMail, xHyperlink)
      Next
    End If
  Next
  xExcelWs.Columns("A:C").AutoFit
  xExcel.Visible = True
End Sub

Sub ExportToExcelFile(curMail As MailItem, curHyperlink As Word.Hyperlink)
  Dim xRow As Integer
  xRow = xExcelWs.Range("A" & xExcelWs.Rows.Count).End(xlUp).Row + 1
  With xExcelWs
    .Cells(xRow, 1) = curMail.Subject
    .Cells(xRow, 2) = curHyperlink.TextToDisplay
    .Cells(xRow, 3) = curHyperlink.Address
  End With
End Sub

在此代碼中,它提取所有超鏈接以及相應的顯示文本和電子郵件主題。

文檔提取網址 1

3。 點擊 工具 > 參考 啟用 參考 - 項目 1 對話框,打勾 Microsoft Excel 16.0 對像庫 Microsoft Word 16.0對像庫 複選框。 點擊 OK.

文檔提取網址 1

文檔提取網址 1

4. 然後將光標放在 VBA 代碼內,按 F5 鍵或單擊 按鈕運行代碼,現在會彈出一個工作簿,其中所有 URL 都已提取,然後您可以將其保存到文件夾中。

文檔提取網址 1

備註:以上所有 VBA 都提取所有類型的超鏈接。


最佳辦公生產力工具

Kutools for Outlook - 超過 100 種強大的功能可增強您的 Outlook

🤖 人工智慧郵件助手: 具備人工智慧魔力的即時專業電子郵件——一鍵天才回覆、完美語調、多語言掌握。輕鬆改變電子郵件! ……

📧 電子郵件自動化: 外出(適用於 POP 和 IMAP)  /  安排發送電子郵件  /  發送電子郵件時按規則自動抄送/密件副本  /  自動轉送(進階規則)   /  自動添加問候語   /  自動將多收件者電子郵件拆分為單獨的訊息 ...

📨 電子郵件管理: 輕鬆回憶電子郵件  /  按主題和其他人阻止詐騙電子郵件  /  刪除重複的電子郵件  /  進階搜索  /  合併資料夾 ...

📁 附件專業版批量保存  /  批量分離  /  批量壓縮  /  自動保存   /  自動分離  /  自動壓縮 ...

🌟 介面魔法: 😊更多又漂亮又酷的表情符號   /  使用選項卡式視圖提高 Outlook 工作效率  /  最小化 Outlook 而不是關閉 ...

👍 一鍵奇蹟: 使用傳入附件回覆全部  /   反網路釣魚電子郵件  /  🕘顯示寄件者的時區 ...

👩🏼‍🤝‍👩🏻 通訊錄和行事曆: 從選定的電子郵件中大量新增聯絡人  /  將聯絡人群組拆分為各組  /  刪除生日提醒 ...

超過 100特點 等待您的探索! 按此處了解更多。

了解更多       免費下載      購買
 

 

Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations