2016-02-14 26 views
0

我想在一个包含大量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 

它的工作原理是,但它将取代公式,巫婆,我不想。

回答

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

+0

我做了一些测试。它工作正常,除非它发现一个完全空的工作表。它给了我一个错误,说“没有找到细胞”,然后停下来。我不明白为什么它必须在工作表中至少有一个单元格的值。我该如何解决这个问题? –

+0

@FelipeMüller请参阅我的**编辑#1 ** –

+0

现在完美。谢谢! –

相关问题