Excel工作表或整个工作簿中,批量替换“文本框”中的指定内容!
Excel情报局
Excel职场联盟




前言|职场实例


01|只替换单个工作表中文本框内容
Sub TextBoxReplace()Dim xWs As WorksheetDim shp As ShapeDim xFindStr As StringDim xReplace As StringxFindStr = Application.InputBox("Find:", xTitleId, "", Type:=2)xReplace = Application.InputBox("Replace:", xTitleId, "", Type:=2)Set xWs = Application.ActiveSheetOn Error Resume NextFor Each shp In xWs.Shapes xValue = shp.TextFrame.Characters.Text shp.TextFrame.Characters.Text = VBA.Replace(xValue, xFindStr, xReplace, 1)NextEnd Sub如下图所示:

02|替换整个工作簿的文本框内容
如果我们的文本框存在于多个工作表中,我们想要将整个工作簿中所有工作表中文本框内容“Excel”替换为“Word”,如果还用上面的代码,就会失效。
上面的那段代码是:
想要替换哪个工作表中文本框必须右击对应工作表的名称标签,点击“查看代码”,即有局限性。
如果有1000个工作表的话,当然,如果你不嫌麻烦,可以一个一个工作表进行复制代码操作。
我们以2个工作表(工作表1:Excel情报局;工作表2:Excel职场联盟)为例,来简单的进行说明。如下图所示:

我们右击任意一个工作表名称标签,点击“查看代码”,进入VBA编辑器界面(或按快捷键Alt+F11进入)。
然后将下面一段VBA代码复制粘贴到VBA编辑器录入界面中,最后点击上方的【运行】-【运行子过程/用户窗体】后,关闭VBA编辑器窗口。
Sub 批量替换文本框7()Dim oWK As WorksheetFor Each oWK In WorksheetsWith oWKsOldText = "Excel"sNewText = "Word"For Each oSP In .ShapesWith oSPIf oSP.Type = msoTextBox ThensText = .TextFrame2.TextRange.Text.TextFrame2.TextRange.Text = VBA.Replace(sText, sOldText, sNewText)End IfEnd WithNextEnd WithNext oWKMsgBox "操作完成"End Sub最后我们发现:
所有工作簿中文本框内容中的“Excel”批量替换为了“Word”
如下如所示:

此段代码需要我们根据实际情况灵活修改:
①sOldText = "Excel"
此句代码中的“Excel”:是要查找替换的旧文本
②sNewText = "Word"
此句代码中的“Word”:是要替换修改为的新文本





赞 (0)
