Добрый день! Помогите пожалуйста. Пытаюсь решить задачу по перемещению определенной информации из документа Word в лист Excel для последующей обработки. Файл Word выбираем один из нескольких. Далее в word'e ищем текст, и предложение после найденного сохранить в ячейку cell(1,1) Ниже копируем таблицу. Проблема в том, что - что Selection, что Content, что Range не находят текст (или не ищут). Уже пробовал ставить закладку. Таблица перемещается успешно.
Добрый день! Помогите пожалуйста. Пытаюсь решить задачу по перемещению определенной информации из документа Word в лист Excel для последующей обработки. Файл Word выбираем один из нескольких. Далее в word'e ищем текст, и предложение после найденного сохранить в ячейку cell(1,1) Ниже копируем таблицу. Проблема в том, что - что Selection, что Content, что Range не находят текст (или не ищут). Уже пробовал ставить закладку. Таблица перемещается успешно.olugr76
Весь код висит на пользовательской форме UserForm1 Вот строки - я открываю приложение Word и запускаю требуемый файл:
[vba]
Код
Set WordOBJ = GetObject(, "Word.Application") If WordOBJ Is Nothing Then Set WordOBJ = CreateObject("Word.Application") Set WordDoc = WordOBJ.Documents.Open(StartForm) WordOBJ.Visible = True Else: Set WordDoc = WordOBJ.Documents.Open(StartForm) End If
[/vba]
Где-то вычитав что при Selection необходимо работать с ActiveDocument я создал переменную AD - [vba]
Код
Set AD = WordOBJ.ActiveDocument
[/vba]. Хотя это не помогло
Весь код висит на пользовательской форме UserForm1 Вот строки - я открываю приложение Word и запускаю требуемый файл:
[vba]
Код
Set WordOBJ = GetObject(, "Word.Application") If WordOBJ Is Nothing Then Set WordOBJ = CreateObject("Word.Application") Set WordDoc = WordOBJ.Documents.Open(StartForm) WordOBJ.Visible = True Else: Set WordDoc = WordOBJ.Documents.Open(StartForm) End If
[/vba]
Где-то вычитав что при Selection необходимо работать с ActiveDocument я создал переменную AD - [vba]
Ответ открыт olugr76, я подправил Вам код, надеюсь разберетесь как дальше.
[vba]
Код
Option Explicit
Private Sub CommandButton1_Click() On Error GoTo ErrCatch
Dim WordOBJ As Object Dim WordDoc As Object Dim rS As Word.Range Dim l As Long
Set WordOBJ = GetWord Set WordDoc = WordOBJ.Documents.Open(StartForm) WordOBJ.Visible = True Set rS = WordDoc.Content
With rS.Find .ClearFormatting .Text = "цикл:" .Forward = True .Wrap = wdFindStop .MatchCase = False If Not .Execute Then MsgBox ("Ничего не найдено!") Else While .Found l = l + 1 Range("A" & l) = rS.Paragraphs(1) .Execute Wend End If End With
Finalize: WordDoc.Close False WordOBJ.Quit False Set WordDoc = Nothing Set WordOBJ = Nothing Unload UserForm1
Exit Sub ErrCatch: MsgBox "Error! " & Err.Number & vbNewLine & Err.Description, vbExclamation, "CommandButton1_Click" GoTo Finalize End Sub
Private Function GetWord() As Object On Error Resume Next Set GetWord = GetObject(, "Word.Application") If GetWord Is Nothing Then Set GetWord = CreateObject("Word.Application") End If End Function
[/vba]
Ответ открыт olugr76, я подправил Вам код, надеюсь разберетесь как дальше.
[vba]
Код
Option Explicit
Private Sub CommandButton1_Click() On Error GoTo ErrCatch
Dim WordOBJ As Object Dim WordDoc As Object Dim rS As Word.Range Dim l As Long
Set WordOBJ = GetWord Set WordDoc = WordOBJ.Documents.Open(StartForm) WordOBJ.Visible = True Set rS = WordDoc.Content
With rS.Find .ClearFormatting .Text = "цикл:" .Forward = True .Wrap = wdFindStop .MatchCase = False If Not .Execute Then MsgBox ("Ничего не найдено!") Else While .Found l = l + 1 Range("A" & l) = rS.Paragraphs(1) .Execute Wend End If End With
Finalize: WordDoc.Close False WordOBJ.Quit False Set WordDoc = Nothing Set WordOBJ = Nothing Unload UserForm1
Exit Sub ErrCatch: MsgBox "Error! " & Err.Number & vbNewLine & Err.Description, vbExclamation, "CommandButton1_Click" GoTo Finalize End Sub
Private Function GetWord() As Object On Error Resume Next Set GetWord = GetObject(, "Word.Application") If GetWord Is Nothing Then Set GetWord = CreateObject("Word.Application") End If End Function
iMrTidy, огромное спасибо, помогло! Это просто волшебство. Я так правда и не понял где была основная ошибка (в определении переменной? или selection не срабатывал) Только у меня теперь таблица не хочет передаваться: при передаче объединенной ячейки (т.е. той которая как бы не существует - ячейка 2,1) - выдает ошибку 5941 (Запрашиваемый номер семейства не существует).
iMrTidy, огромное спасибо, помогло! Это просто волшебство. Я так правда и не понял где была основная ошибка (в определении переменной? или selection не срабатывал) Только у меня теперь таблица не хочет передаваться: при передаче объединенной ячейки (т.е. той которая как бы не существует - ячейка 2,1) - выдает ошибку 5941 (Запрашиваемый номер семейства не существует).olugr76