VB.NET Search and Replace in Word document
By Allen Stoner
Sometimes it may be necessary to use a VB.NET applicaiton to do a Search and Replace in a MS Word document. This function does the search and replace in all sections of the Word document and saves it back to the disk with the same name.
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
VB.NET Search and Replace in Word document (4492 Views)