Я пытаюсь создать документ Excel, в который я могу вставить список слов для поиска и замены.Я хочу использовать документ Excel для поиска и замены этих слов в текстовом документе.
У меня возникли проблемы с получением кода для работы.
Sub SearchReplace()
Dim WordDoc As Object, N As Variant, i As Integer, j As Integer
i = Range("C2").Value 'pulls length of list from an excel function located in cell C2
N = Range("B4:C" & CStr(i + 3)).Value
Set WordDoc = CreateObject(Class:="Word.Application")
WordDoc.Visible = True
WordDoc.Documents.Open Filename:="C:\WordTest.docm"
WordDoc.Activate
With WordDoc.ActiveDocument
For j = 1 To i
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = False
.Wrap = wdFindContinue
.Text = N(1, j)
.Replacement.Text = N(2, j)
.Execute
End With
End With
Next j
End With
WordDoc.Quit
Set WordDoc = Nothing
End Sub
Я исправил код на основерекомендации, и я больше не получаю никаких ошибок.Однако, похоже, что код не находит и не заменяет что-либо в указанном документе word.Я попытался упростить код, чтобы проверить часть поиска и замены, набрав определенное слово «текст» и определенное слово «заменить», чтобы найти и заменить в документе слова, который содержит слово «текст».Это по-прежнему не приводит к изменениям.Я удалил строку, которая закрывала документ на тот случай, если проблема заключалась в том, что документ не был сохранен после обновления, но это также не увенчалось успехом, поэтому я добавил WordDoc.Quit обратно в код.
Sub SearchReplace()
Dim WordDoc As Object, N As Variant, i As Integer, j As Integer
i = Range("C2").Value 'pulls length of list from an excel function
located in cell C2
N = Range("B4:C" & CStr(i + 3)).Value
Set WordDoc = CreateObject(Class:="Word.Application")
WordDoc.Visible = True
WordDoc.Documents.Open Filename:="C:\WordTest.docm"
WordDoc.Documents("WordTest.docm").Activate
With WordDoc.ActiveDocument
For j = 1 To i
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = False
.Wrap = 1
.Text = "text" 'N(j, 1)
.Replacement.Text = "replace" 'N(j, 2)
.Execute 2
End With
End With
Next j
End With
WordDoc.Quit
Set WordDoc = Nothing
End Sub