Înlocuire text în documente

O macrocomandă utilă (pentru unii :) ), găsită pe

https://www.datanumen.com/blogs/find-replace-contents-multiple-word-documents/

Macrocomanda face următoarele:

  • deschide folderul specificat în prima casetă de dialog (calea completă, care poate fi copiată din Explorer - de exemplu, D:\Docs\Teste)
  • apoi, pe rând, deschide toate fișierele Word (doc sau docx) din acel folder
  • caută textul specificat în a doua casetă de dialog și îl înlocuiește cu cel scris în a treia casetă de dialog
  • salvează și închide fișierul.

Codul este copiat mai jos - are o singură modificare la tipul fișierului față de codul original, ca să preia și fișiere .doc.

În loc de

strFile = Dir(strFolder & "\" & "*.docx", vbNormal)

am scris

strFile = Dir(strFolder & "\" & "*.doc*", vbNormal)

Sub FindAndReplaceInFolder()
  Dim objDoc As Document
  Dim strFile As String
  Dim strFolder As String
  Dim strFindText As String
  Dim strReplaceText As String
 
'Copiat de pe https://www.datanumen.com/blogs/find-replace-contents-multiple-word-documents/
'Sunt afisate cele 3 casete pentru introducere date - calea la folder, text cautat si text cu care se inlocuieste.
  strFolder = InputBox("Aici se introduce calea la folder:")
  strFile = Dir(strFolder & "\" & "*.doc*", vbNormal)
  strFindText = InputBox("Textul cautat:")
  strReplaceText = InputBox("Text cu care se inlocuieste:")
 
'Macrocomanda deschide fiecare fisier de tip doc* din folder, cauta si inlocuieste textul. Apoi salveaza si inchide fisierul.
  While strFile <> ""
    Set objDoc = Documents.Open(FileName:=strFolder & "\" & strFile)
    With objDoc
      With Selection
        .HomeKey Unit:=wdStory
        With Selection.Find
          .text = strFindText
          .Replacement.text = strReplaceText
          .Forward = True
          .Wrap = wdFindContinue
          .Format = False
          .MatchCase = False
          .MatchWholeWord = False
          .MatchWildcards = False
          .MatchSoundsLike = False
          .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
      End With
      objDoc.Save
      objDoc.Close
      strFile = Dir()
    End With
  Wend
End Sub