Excel:用宏替换正则表达式的超链接中的字符串

时间:2012-09-12 13:21:17

标签: regex excel vba

我试图通过宏替换Excel 2003(VB5.5)中的字符串(例如所有数字)。 现在,我有这个代码:

Sub DeleteDigits()
Dim hLink As Hyperlink
Dim wSheet As Worksheet

For Each wSheet In Worksheets
    For Each hLink In wSheet.Hyperlinks
        hLink.Address = regEx.Replace(hLink.Address, "\d", "")
    Next hLink
Next wSheet
End Sub

我在引用中检查了正则表达式,但我不知道如何通过 hLink.Address 不是对象的消息,这是我得到的错误。

1 个答案:

答案 0 :(得分:1)

Replace不支持三个参数。您必须首先通过属性设置模式。像这样:

Sub DeleteDigits()
    Dim hLink As Hyperlink
    Dim wSheet As Worksheet
    Dim regEx As New VBScript_RegExp_55.RegExp

    For Each wSheet In Worksheets
        For Each hLink In wSheet.Hyperlinks
            regEx.Pattern = "\d"
            hLink.Address = regEx.Replace(hLink.Address, "")
        Next hLink
    Next wSheet
End Sub

修改
支持文档:

  
    

“Pattern - 用于定义正则表达式的字符串。必须在使用正则表达式对象之前设置该字符串。”
    ...
    “Replace(search-string,replace-string) - Replace方法接受2个字符串作为参数。如果能够成功匹配搜索字符串中的正则表达式,则将该匹配替换为replace-string,并且返回新字符串。如果未找到匹配项,则返回原始搜索字符串。“

         

http://msdn.microsoft.com/en-us/library/ms974570.aspx#scripting05_topic2