Я пытаюсь выполнить цикл через строки Excel, где в столбце A содержится текст, который я хочу найти в Word. В столбце B содержится то, что я хочу вставить в Word после окончания абзаца, в котором найден текст.Прокрутите строки Excel, введите значение в Word, вставьте строку Excel
При работе в Word VBA текст поиска работает и перемещается в конец абзаца. Но когда я перехожу в Excel VBA, метод find, похоже, ничего не делает.
Sub UpdateWordDoc1()
Dim mywb As Excel.Worksheet
Set mywb = ActiveWorkbook.ActiveSheet
Dim wdDoc As Object, wdApp As Object
Dim questiontext As String
Dim oSearchRange
On Error Resume Next
Set wdDoc = CreateObject("C:\mydoc.docx")
Set wdApp = wdDoc.Application
Set oSearchRange = wdDoc.Content
With mywb
For i = 2 To .Range("A6000").End(xlUp).Row
questiontext = .Range("A" & i).Value
.Range("B" & i).Copy
Set blabla = oSearchRange.Find.Execute.Text = questiontext
blabla.Select
Selection.movedown unit:=wdparagraph
Selection.moveleft unit:=wdcharacter
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Next i
End With
'wdDoc.Close savechanges:=True
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
Вы добавили ссылку на библиотеку объектов Word? Excel не знает, что такое значение (например, 'wdFormatOriginalFormatting' ... –
Да. Ссылка есть, и код работает нормально. Он просто ничего не делает. Моя догадка в том, что это вокруг выбора. Я не думаю, что программа передает «активное» слово в Word и позволяет ему взять под свой контроль и найти текст вопроса, а затем действовать по нему. Но, очевидно, я не уверен. Когда я перехожу через код, ничего не происходит, например, в moveown или moveleft, который я хотел видеть, что курсор действительно перемещается. – strahanstoothgap
Код 'Selection.movedown' (и подобные вещи) будет управлять выбором Excel, а не Word. Вы можете исправить это, используя 'wdApp.Selection' или' wdDoc.ActiveWindow.Selection' или что-то подобное. – xidgel