如何用vba批量替换excel工作表文本框中的内容?

在excel中,要批量替换单元格的内容,可以直接使用【查找替换】功能,如下图所示

 

 

可以批量将单元格中的【张三】替换为【李四】。

 

但是,如果要查找替换的内容在excel的文本框中,用上述方法就行不通了。

 

如下图所示,工作表名称”Sheet1″里面,有很多文本框。

 

 

要把文本框内的内容【张三】替换为【李四】,代码可以这样写:

Sub exceloffice() 
    '作者QQ:1722187970,微信:xycgenius,微信公众号exceloffice
    Dim oWK As Worksheet
    Set oWK = Excel.ThisWorkbook.Worksheets("Sheet1")
    Dim oSP As Shape
    With oWK
        sOldText = "张三"
        sNewText = "李四"
        For Each oSP In .Shapes
            With oSP
                '只替换文本框中的内容
                If .Type = msoTextBox Then
                    '读取文本框原来的内容
                    sText = .TextFrame2.TextRange.Text
                    '输入替换后的内容
                    .TextFrame2.TextRange.Text = VBA.Replace(sText, sOldText, sNewText)
                End If
            End With
        Next
    End With
    MsgBox "操作完成"
End Sub

 

运行上述代码以后,所有文本框中的张三就都变成李四了,如下所示

 

在Excel中所有的图片、图形、形状等都属于Shape对象。

 

针对不同的种类,Shape对象的Type属性可以识别。

 

在这里通过Shape对象的Type属性等于 msoTextBox来过滤所有的文本框对象。

 

通过这个例子,不仅可以遍历所有文本框,还可以遍历所有其它的图层对象。

 

如果要将选中的多个工作表中的文本框批量替换,代码会略有不同,可以参考下文:

如何用vba批量将选中的多个工作表文本框中的文本替换为其它文本?

       

发表评论