Private Sub ReplaceStringInFilesSample()
Const strFn = "ReplaceStringInFilesSample"
Dim strFromFiles As String
strFromFiles = CombinePathAndFile(GetWindowsDirectory, "*.*")
strFromFiles = InputBox("Top of SOURCE file hierarchy: (Wildcards allowed; {Esc} cancels.)", strFn, strFromFiles)
If Len(strFromFiles) = 0 Then Exit Sub
Dim strToDirectory As String
strToDirectory = GetTempFileName(Null, strFn)
strToDirectory = InputBox("Top of DESTINATION file hierarchy: (ANY FILE WITH THIS NAME WILL BE DELETED.) ({Esc} cancels.)", strFn, strToDirectory)
If Len(strToDirectory) = 0 Then Exit Sub
If Len(Dir$(strToDirectory)) Then Kill strToDirectory
Dim strFindPatt As String
strFindPatt = GetWindowsDirectory
strFindPatt = InputBox("Pattern to FIND: ({Esc} cancels.)", strFn, strFindPatt)
If Len(strFindPatt) = 0 Then Exit Sub
Dim strReplace As String
strReplace = Chr$(ASC(strFindPatt) + 1) + Mid$(strFindPatt, 2)
strReplace = InputBox("REPLACEMENT string: ({Esc} means replacement is blank/empty string.)", strFn, strReplace)
If Len(strFindPatt) <> Len(strReplace) Then
If vbCancel = MsgBox("The length of the find and replace strings are different! This will likely corrupt any binary files!", vbExclamation + vbOKCancel + vbDefaultButton2, strFn) Then Exit Sub
End If
Dim enumCompare As VbCompareMethod
Select Case MsgBox("Use dictionary/text comparisons? Choose No for literal/binary.", vbQuestion + vbYesNoCancel + vbDefaultButton1, strFn)
Case vbYes
enumCompare = vbTextCompare
Case vbNo
enumCompare = vbBinaryCompare
Case vbCancel
Exit Sub
Case Else
Stop
End Select
Dim intCapLikeOrig As Integer
If intCompare = vbBinaryCompare Then
intCapLikeOrig = True
Else
Select Case MsgBox("Capitalize any replacement text as the original text is capitalized?", vbQuestion + vbYesNoCancel + vbDefaultButton1, strFn)
Case vbYes
intCapLikeOrig = True
Case vbNo
intCapLikeOrig = False
Case vbCancel
Exit Sub
Case Else
Stop
End Select
End If
Dim strSeparator As String
strSeparator = InputBox("String separator for exclude files: ({Esc} cancels.)", strFn, " ")
If Len(strSeparator) = 0 Then Exit Sub
Dim strExclude As String
strExclude = "*.mda" + strSeparator + "*.mdb" + strSeparator + "*.mmf" + strSeparator + "*.sec" + strSeparator + "*.zip"
strExclude = InputBox("Exclude these files: ({Esc} cancels.)", strFn, strExclude)
If Len(strExclude) = 0 Then Exit Sub
Dim intReplace As Integer
Select Case MsgBox("Search and Replace? Choose No to Search only.", vbQuestion + vbYesNoCancel + vbDefaultButton1, strFn)
Case vbYes
intReplace = True
Case vbNo
intReplace = False
Case vbCancel
Exit Sub
Case Else
Stop
End Select
MsgBox "This sample subroutine only examines files with Normal attributes; it does NOT examine files which have Hidden and/or System attributes.", vbInformation, strFn
MsgBox "Return = " & ReplaceStringInFiles(est, strFromFiles, strToDirectory, strFindPatt, strReplace, intCompare, intCapLikeOrig, strExclude, " ", vbNormal, intReplace) & " (True means success; False means failure.)", vbInformation, strFn
Debug.Print est.MessageText
End SubCopyright 1996-1999 Entisoft
Entisoft Tools is a trademark of Entisoft.