我想在Word VBA中更改电子邮件地址

时间:2016-10-09 16:33:46

标签: word-vba

在Word中,我想搜索@ yahoo.com的活动文档,并用newName@gmail.com替换所有实例。当我使用*@yahoo.com查找它时,替换命令会删除@ yahoo.com之前的所有文档

    Sub kiffin()
         With Selection.Find
         .ClearFormatting
         .MatchWildcards = True
         .Text = "*@yahoo.com"
         .Replacement.ClearFormatting
         .Replacement.Text = "newName@gmail.com"
         .Execute Replace:=wdReplaceAll, Forward:=True, _
           Wrap:=wdFindContinue
       End With

   End Sub

1 个答案:

答案 0 :(得分:0)

在这种情况下,通配符*显然过于贪婪,而Word查找功能中可用的有限通配符/正则表达式支持可能不适合识别单个电子邮件地址。 (注意:Word,也不是RegEx是我的专业知识)。

如果Word文档中的电子邮件地址是作为超链接提供的,则可以通过循环Hyperlinks集合并检查TextToDisplay"@yahoo.com"来完成此操作。

Sub ReplaceEmailHyperlinks()

Dim newemail as String
Dim h As Hyperlink

newemail = "NewEmail@gmail.com"

For Each h In ActiveDocument.Hyperlinks
    If h.TextToDisplay Like "*@yahoo.com" Then
        h.TextToDisplay = newemail
        h.Address = "mailto:" & newemail
    End If
Next
End Sub