Моя цель - найти уникальный текст в текстовом документе «Экономика Северной Ирландии» и скопировать три последовательных слова из этого документа. И я должен сделать это из Excel VBA. Документ Word, в котором выполняется поиск, будет открыт вручную перед выполнением кода VBA из файла .xlsm. Это будет единственный открытый файл .docx во время выполнения кода VBA, но имя файла всегда будет другим, поэтому мы не можем жестко закодировать ни имя файла .docx, ни путь.
Sub Find_Price()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim TextToFind As String
Dim NumberToFind As String
Dim Rng As Word.Range
Application.ScreenUpdating = False
'This is the text I'm looking for in .ActiveDocument
TextToFind = "The economies of Northern Ireland "
NumberToFind = "82110907192"
'Reference already opened Word document from excel VBA console
Set WordApp = GetObject(, "Word.Application")
WordApp.Application.Visible = True
WordDoc.Select
Set Rng = WordApp.ActiveDocument.Content
'Set WordDoc = WordApp.Documents.Open(FilePath & "Form1.docx")
'Set WordDoc = WordApp.ActiveDocument 'I don't know how to finish this line :-(
'With WordApp.Content.Find.Execute.NumberToFind
With WordDoc.Content.Find.Execute.NumberToFind 'Code crashes in this line;
Rng.Find.Execute FindText:=TextToFind, Forward:=True
'what this "Forward:=True" means??
If Rng.Find.Found Then
If Rng.Information(wdWithInTable) Then
' I don't know how to write this part of the code.
' Please don't remove my question again - I've researched 16h for this info.
MsgBox "Price is " & TextToFind & " pln."
End If
Else
MsgBox "Text was not found!"
End If
End Sub
Код вылетает в этой строке:
With WordDoc.Content.Find.Execute.NumberToFind
Самое важное для меня:
1) выполнить поиск в данный момент открытое слово do c, из редактора Excel vba,
2) найдите уникальный текст = "Экономика Северной Ирландии" в этом документе слова,
3) и скопируйте этот текст в буфер обмена, чтобы я мог вручную вставить его в ячейку по своему выбору.