【发布时间】:2018-03-31 03:52:23
【问题描述】:
我正在编写 vba 代码以完成以下任务
- Word 文档从文件夹中打开一个文本文件
- 根据 excel 表查找和替换文本(多个文本)(具有查找内容并替换为)
- 处理文件夹中的所有文本文件并保存。
我想为上述需求定制下面的代码,
我正在使用 Office 2016,我认为我必须将脚本中的 Application.FileSearch 替换为 ApplicationFileSearch 2003 和以前的 Office 版本。
我尝试使用宏记录器来完成,也使用了notepad++,我也用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
谢谢 周杰伦
【问题讨论】: