我在 Outlook 上運行 VBA 宏,它將從電子郵件中提取域。我所擁有的效果很好,但只提取“@”符號之后的所有內容,因此子域被包含在鏈接中,從而擺脫了我的排序。但不是每個地址都有一個子域,所以我必須足夠靈活地適應兩者。
以下是我從示例電子郵件地址中獲得的結果:
- [email protected] 回傳xyz.com
- [email protected]回傳subdomain.xyz.com
我希望兩個電子郵件地址都回傳xyz.com。
我使用的字串是:
sDomain = Right(oMail.SenderEmailAddress, Len(oMail.SenderEmailAddress) - InStr(1, oMail.SenderEmailAddress, "@"))
也許有一種方法可以使用最后一個點提取 TLD,然后將其與該點前面的二級域連接,但由于二級域可能有一個 & 或一個點,我無法弄清楚將同時兼顧兩者的公式。
我感謝您的幫助!
uj5u.com熱心網友回復:
您可以使用Split()函式將域名拆分為其組件,但您需要更多額外的邏輯以使其足夠通用:一些 TLD 有 3 個組件,而不是 2 個 - 例如,對于"[email protected]"您想要"domain.co.uk"的,不是"co.uk"
uj5u.com熱心網友回復:
嘗試這樣的事情(但請注意德米特里的回答......)
Sub DomainTester()
Dim a
For Each a In Array("xyz.com", "[email protected]", "[email protected]", "A@xyz")
Debug.Print a, Domain(a)
Next a
End Sub
Function Domain(addr) As String
Dim arr
If InStr(addr, "@") > 0 Then
arr = Split(Split(addr, "@")(1), ".")
If UBound(arr) > 0 Then Domain = arr(UBound(arr) - 1) & "." & arr(UBound(arr))
End If
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410927.html
標籤:
