Вытащить текст между известным текстом и таблицей

Программирование на Visual Basic for Applications
mshak
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 29.01.2008 (Вт) 14:17

Вытащить текст между известным текстом и таблицей

Сообщение mshak » 04.02.2008 (Пн) 11:26

Добрый день.
Вот возникла необходимость в accessе вытащить текст между известной таблицей и известным предложением в тексте из документа word. саму таблицу я нахожу, могу получить некоторое количество символов до таблицы.. а вот именно до определенной строки не получается //

как нахожу таблицу:
Код: Выделить всё

'поиск требуемой таблицы
i = 0
Do
Set myTable = word_doc.Tables(word_doc.Tables.Count - i)
i = i + 1
new_value = myTable.Cell(1, 1)
Loop While Not (InStr(1, new_value, "1", vbTextCompare) > 0)

'выбираем 500 символов до таблицы
Dim objResh As Object
Set objResh = myTable.Parent.Range(myTable.Range.Start - 500, myTable.Range.Start)

'допустим вытаскиваем из этого текста последний параграф
Решение = ReplaceChr13(objResh.Paragraphs(objResh.Paragraphs.Count).Range.Text)


но текст может быть и в нескольких параграфах.. может и в двух.. а может и в 3х..
Последний раз редактировалось mshak 14.02.2008 (Чт) 13:06, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.02.2008 (Пн) 11:30

Какие таблицы? Какие формы Access?
Lasciate ogni speranza, voi ch'entrate.

mshak
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 29.01.2008 (Вт) 14:17

Сообщение mshak » 04.02.2008 (Пн) 11:59

прошу прощения, ввел в заблеждение некорректной формулировкой вопроса, собственно сам аксес в данном случае не важен, т.к. я подключаюсь к документу word
Код: Выделить всё

Set word_app = CreateObject("Word.Application")
word_app.Visible = False
   
word_app.Documents.Open FileName:=FWord, ReadOnly:=True

    If Val(word_app.Application.Version) >= 8 Then
        Set word_doc = word_app.ActiveDocument
    Else
        Set word_doc = word_app
    End If



А ведь на самом деле ларчик просто открывался, пока писал этот, второй, пост придумал работающее решение, а до этого мучался несколько дней, пытался реализовать через .Find.
Может кому и пригодится:

Код: Выделить всё

Dim objResh As Object
Set objResh = myTable.Parent.Range(myTable.Range.Start - 500, myTable.Range.Start)

For i = 0 To objResh.Paragraphs.Count - 1
    new_value = ReplaceChr13(objResh.Paragraphs(objResh.Paragraphs.Count - i).Range.Text)
    If (InStr(1, new_value, "ЗАКЛЮЧЕНИЕ ПО", vbTextCompare) > 0) Then
      Exit For
    Else
       Решение = new_value & Решение
    End If
Next i




может кто-нибуть знает более изящное решение? ... чем перебор по абзацам с поиском ключевых фраз


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList