Imports Microsoft.Office.Interop.Word Const wdReplaceAll = 2 Const wdFindStop = 0 Const wdFindContinue = 1 Const wdNoProtection = -1 Private Function SearchReplaceInFile(ByRef SearchFor As String, ByRef ReplaceWith As String, ByRef strFileName As String) As Boolean Dim docProtectType As Int16 Dim MadeChange As Boolean = False Dim DestFileName As String = "" Dim appWord As Application Dim wrdDoc As Document appWord = New Application appWord.WordBasic.DisableAutoMacros(1) wrdDoc = appWord.Documents.Open(strFileName) ' Save the protection type of the document then turn off protection docProtectType = wrdDoc.ProtectionType If docProtectType <> wdNoProtection Then wrdDoc.Unprotect() End If Dim oRange As Microsoft.Office.Interop.Word.Range ' Search and replace in ALL parts of the Word document, header, body and footer For Each oRange In wrdDoc.StoryRanges With oRange.Find .ClearFormatting() .MatchCase = False .MatchPhrase = True .Text = SearchFor .Replacement.ClearFormatting() .Replacement.Text = ReplaceWith If .Execute(Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue) Then MadeChange = True Else MadeChange = False End If End With Next ' Put protection back the way it was wrdDoc.Protect(Type:=docProtectType, NoReset:=True) wrdDoc.Save() wrdDoc.Close(False) appWord.Quit() wrdDoc = Nothing appWord = Nothing Return MadeChange End Function