我正在处理vba代码以完成以下任务
我想根据上述要求自定义以下代码,
我正在使用Office 2016,我认为我必须将脚本中的Application.FileSearch替换为2003年的ApplicationFileSearch和以前的办公室版本。
我尝试使用单词宏录音机完成并使用了记事本++,我也记录在Notepad ++中它适用于一个文件,我想批量处理文件夹中的所有文件并在更换后保存文本。
由于有太多的行要替换超过30行或更多行来替换,我希望代码从excel文件中查找文本,例如查找内容并替换为列。
Sub FindReplaceAllDocsInFolder( )
Dim i As Integer
Dim doc As Document
Dim rng As Range
With Application.FileSearch
.NewSearch
.LookIn = "C:\My Documents"
.SearchSubFolders = False
.FileType = msoFileTypeWordDocuments
If Not .Execute( ) = 0 Then
For i = 1 To .FoundFiles.Count
Set doc = Documents.Open(.FoundFiles(i))
For Each rng In doc.StoryRanges
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Dewey & Cheatem"
.Replacement.Text = "Dewey, Cheatem & Howe"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
Next rng
doc.Save
doc.Close
Set rng = Nothing
Set doc = Nothing
Next i
Else
MsgBox "No files matched " & .FileName
End If
End With
End Sub
由于 杰
答案 0 :(得分:1)
Sub SearchTextFile()
Const strFileName = "C:\MyFiles\TextFile.txt"
Const strSearch = "Some Text"
Dim strLine As String
Dim f As Integer
Dim lngLine As Long
Dim blnFound As Boolean
f = FreeFile
Open strFileName For Input As #f
Do While Not EOF(f)
lngLine = lngLine + 1
Line Input #f, strLine
If InStr(1, strLine, strSearch, vbBinaryCompare) > 0 Then
MsgBox "Search string found in line " & lngLine, vbInformation
blnFound = True
Exit Do
End If
Loop
Close #f
If Not blnFound Then
MsgBox "Search string not found", vbInformation
End If
End Sub
这只是找到匹配。您可以使用内置功能“替换”,它可以完成整个修复。您还必须使用“循环文件”代码,这是一个代码段。
Dim StrFile As String
StrFile = Dir(pathtofile & "\*" & ".txt")
Do While Len(StrFile) > 0
Debug.Print StrFile
StrFile = Dir
Loop
我想把它作为评论,但文字太多了。这并不是一个完整的答案,只是给你自己所需的部分。
答案 1 :(得分:1)
感谢您的帮助。我找到了使用下面的EXE的替代解决方案。 FART.exe(FART - 查找和替换文本)。我用下面的命令示例创建了一个批处理文件。
https://emtunc.org/blog/03/2011/farting-the-easy-way-find-and-replace-text/
http://fart-it.sourceforge.net/
示例:
放屁" C:\ APRIL2011 \ Scripts \ someFile.txt" oldText newText
该行指示FART简单地用newText替换字符串oldText。
fart -i -r" C:\ APRIL2011 \ Scripts * .prm" march2011 APRIL2011
此行将指示FART以递归方式(-r)搜索\ Scripts文件夹中具有.prm扩展名的任何文件。 -i标志告诉FART在查找字符串时忽略区分大小写。