我想在包含大量excel文件的文件夹中进行批量替换。某些文件位于子文件夹中。但是,只有当我替换的单元格不是公式时,我才想要替换。我想我可以通过检查是否有" ="作为单元格的第一个字符,但我不知道如何编码它。到目前为止,我有这个:
Dim FileSystem As Object
Dim HostFolder As String
Sub Init()
HostFolder = "C:\Users\Felipe\Desktop\ReplaceTest\"
Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(HostFolder)
End Sub
Sub DoFolder(Folder)
Dim SubFolder
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
Dim File
For Each File In Folder.Files
With Workbooks.Open(File)
Dim worksheet As worksheet
For Each worksheet In ActiveWorkbook.Worksheets
'I don't want the line below to replace formulas
ws.Cells.Replace What:="testA", Replacement:="testB", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
Next worksheet
End With
Next
End Sub
它按原样运作,但它会取代公式,我不想要。
答案 0 :(得分:3)
仅将替换限制为常量:
ws.Cells.SpecialCells(xlCellTypeConstants).Replace What:="testA", Replacement:="testB", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
修改#1:强>
为避免出现恼人的错误:
On Error Resume Next
在Replace
之前并放置:
On Error Goto 0
在Replace