2016-02-14 25 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

現在完美。謝謝! –

相關問題