Say a company rebranded and changed locations. How would you handle updating all the necessary internal documents with the new company name, address, phone number, and email address? This can be a massive undertaking for any company which is why we created the Excel Find and Replace across Multiple Word Documents macro! This is an Excel macro that will Find and Replace values in Multiple Word Documents. This macro references 3 columns in Excel. In Column A are the values to Find. In the adjacent cell in column B is the value that will Replace what is found. Column C is optional allowing you an opportunity to populate the full path to any Word Documents you want to search through. If nothing is populated in the Column C this macro will loop through all of the Word Documents available in the Active Excel Workbook’s Folder Path. Once a Word Document is opened this macro will loop through every Find and Replace value placed in Column A and Column B. This Excel macro is a great way to maintain Word Documents that are routinely changing information.
35 & 63. ‘.Replacement.Highlight = True ‘Highlight the Replacement Text Found Make these code lines no longer a comment to highlight the text you successfully replaced in the Word Documents you are searching
77. MsgBox “The Find and Replace has been completed. Stay Awesome!” Remove if you don’t want a MsgBox when this macro finishes
See it in Action!
Watch this video to see this macro in action.The Code
Here is the code for this macro. Make sure the following References are setup before running it: Visual Basic For Applications, Microsoft Excel 16.0 Object Library, Microsoft Word 16.0 Object Library, Microsoft Office 16.0 Object Library, OLE Automation'Leverage & Lean "Less Clicks, More Results" Sub FindReplaceAcrossMultipleWordDocuments() ' Means variable is in use Dim FindReplaceCounter As Integer ' Dim FolderPath As String ' Dim MyRange As Object ' Dim oFile As Object ' Dim oFolder As Object ' Dim oFSO As Object ' Dim StartTime As String Dim WordApp As New Word.Application ' Dim WordCounter As Integer ' Dim WordDocument As Object ' On Error GoTo LeverageLean Set WordApp = New Word.Application 'Forces a New Word Application each and every time. (Prevents Error 462) If Cells(2, 3).Value <> "" Then 'If a path to Word Documents exist WordCounter = 2 LastRow = Cells(Rows.Count, 3).End(xlUp).Row 'Identify Last Row in Column C Do Until WordCounter > LastRow 'Loop through any Word Documents in Column C Set WordDocument = WordApp.Documents.Open(Cells(WordCounter, 3).Value) WordApp.Visible = True FindReplaceCounter = 2 LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Identify Last Row in Column A Do Until FindReplaceCounter > LastRow 'Complete the Find and Replace for all values in Column A & B Set MyRange = WordApp.ActiveDocument.Content With MyRange.Find .Format = True .MatchWholeWord = True .Wrap = wdFindContinue .Forward = True .Text = Cells(FindReplaceCounter, 1).Value '.Replacement.Highlight = True 'Highlight the Replacement Text Found .Replacement.Text = Cells(FindReplaceCounter, 2).Value .Execute Replace:=wdReplaceAll End With FindReplaceCounter = FindReplaceCounter + 1 Loop WordApp.ActiveDocument.Save WordApp.ActiveDocument.Close 'Close Active Word Document WordCounter = WordCounter + 1 Loop ElseIf Cells(2, 3).Value = "" Then 'If NO paths to Word Documents exist FolderPath = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - Len(ActiveWorkbook.Name)) 'Active Workbook File Path Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFolder = oFSO.GetFolder(FolderPath) For Each oFile In oFolder.Files 'Loop through every File in Active Workbook's folder path If InStr(1, oFile.Type, "Microsoft Word") <> 0 And InStr(1, oFile.Name, "~") = 0 Then 'If the File Type contains the phrase Microsoft Word and is NOT Lock File Set WordDocument = WordApp.Documents.Open(FolderPath & oFile.Name) WordApp.Visible = True FindReplaceCounter = 2 LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Identify Last Row in Column A Do Until FindReplaceCounter > LastRow 'Complete the Find and Replace for all values in Column A & B Set MyRange = WordApp.ActiveDocument.Content With MyRange.Find .Format = True .MatchWholeWord = True .Wrap = wdFindContinue .Forward = True .Text = Cells(FindReplaceCounter, 1).Value '.Replacement.Highlight = True 'Highlight the Replacement Text Found .Replacement.Text = Cells(FindReplaceCounter, 2).Value .Execute Replace:=wdReplaceAll End With FindReplaceCounter = FindReplaceCounter + 1 Loop WordApp.ActiveDocument.Save WordApp.ActiveDocument.Close 'Close Active Word Document End If Next oFile End If WordApp.Quit MsgBox "The Find and Replace has been completed. Stay Awesome!" Set oFSO = Nothing Set oFolder = Nothing Set oFile = Nothing Set WordApp = Nothing Set WordDocument = Nothing Exit Sub LeverageLean: MsgBox (Err.Number & " - " & Err.Description & vbNewLine & vbNewLine & "Don't hesitate to email me: brentschneider@leveragelean.com") End Sub 'Stay Awesome
Macro Monday
Here is the Macro Monday video this macro was featured in. Watch this video to learn how to get the most out of this macro and start using it today!Customization
These lines of code can be customized to personalize this macro.35 & 63. ‘.Replacement.Highlight = True ‘Highlight the Replacement Text Found Make these code lines no longer a comment to highlight the text you successfully replaced in the Word Documents you are searching
77. MsgBox “The Find and Replace has been completed. Stay Awesome!” Remove if you don’t want a MsgBox when this macro finishes