При вызове кода VBA из разных приложений (Excel, Word) по умолчанию используется соответствующая модель приложения (Excel.Application, Word.Application).
Итак, когда вы звоните этой части
Dim rngStory As Range
В Excel создается Excel.Range
, а в Word Word.Range
.
Итак, попробуйте следующий обходной путь:
Sub test()
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
Dim WordDoc As Object
Set WordDoc = WordApp.Documents.Open("G:\Bruger\KBU\template_file.docx")
Dim rngStory
For Each rngStory In WordDoc.StoryRanges
With rngStory.Find
.Text = "find text"
.Replacement.Text = "I'm found"
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next rngStory
End Sub
В любом случае вам нужно будет получить доступ к модели Word Object для значения wdFindContinue
, поэтому включите ссылку: