Excel工作表或整个工作簿中,批量替换“文本框”中的指定内容!
Excel情报局
Excel职场联盟
前言|职场实例
01|只替换单个工作表中文本框内容
Sub TextBoxReplace()
Dim xWs As Worksheet
Dim shp As Shape
Dim xFindStr As String
Dim xReplace As String
xFindStr = Application.InputBox("Find:", xTitleId, "", Type:=2)
xReplace = Application.InputBox("Replace:", xTitleId, "", Type:=2)
Set xWs = Application.ActiveSheet
On Error Resume Next
For Each shp In xWs.Shapes
xValue = shp.TextFrame.Characters.Text
shp.TextFrame.Characters.Text = VBA.Replace(xValue, xFindStr, xReplace, 1)
Next
End Sub
如下图所示:
02|替换整个工作簿的文本框内容
如果我们的文本框存在于多个工作表中,我们想要将整个工作簿中所有工作表中文本框内容“Excel”替换为“Word”,如果还用上面的代码,就会失效。
上面的那段代码是:
想要替换哪个工作表中文本框必须右击对应工作表的名称标签,点击“查看代码”,即有局限性。
如果有1000个工作表的话,当然,如果你不嫌麻烦,可以一个一个工作表进行复制代码操作。
我们以2个工作表(工作表1:Excel情报局;工作表2:Excel职场联盟)为例,来简单的进行说明。如下图所示:
我们右击任意一个工作表名称标签,点击“查看代码”,进入VBA编辑器界面(或按快捷键Alt+F11进入)。
然后将下面一段VBA代码复制粘贴到VBA编辑器录入界面中,最后点击上方的【运行】-【运行子过程/用户窗体】后,关闭VBA编辑器窗口。
Sub 批量替换文本框7()
Dim oWK As Worksheet
For Each oWK In Worksheets
With oWK
sOldText = "Excel"
sNewText = "Word"
For Each oSP In .Shapes
With oSP
If oSP.Type = msoTextBox Then
sText = .TextFrame2.TextRange.Text
.TextFrame2.TextRange.Text = VBA.Replace(sText, sOldText, sNewText)
End If
End With
Next
End With
Next oWK
MsgBox "操作完成"
End Sub
最后我们发现:
所有工作簿中文本框内容中的“Excel”批量替换为了“Word”
如下如所示:
此段代码需要我们根据实际情况灵活修改:
①sOldText = "Excel"
此句代码中的“Excel”:是要查找替换的旧文本
②sNewText = "Word"
此句代码中的“Word”:是要替换修改为的新文本
赞 (0)