Страница: 1 |
Страница: 1 |
Вопрос: Копировать часть текста из Word'а
Добавлено: 01.03.10 16:36
Автор вопроса: Leon29
Добрый день!
Столкнулся с проблемой. Есть вордовские документы (3 шт.) с вопросами (на подобии теста на ЕГЭ). Мне надо на основе этих трёх файлов создать 50 (а может и больше) файлов-вариантов с разными вопросами.Т.е. в каждый вариант входят любые случайные вопросы из исходных файлов. Все вопросы начинаются с "#A(номер вопроса)"
Если бы вопросы не содержали картинок и формул, то сделал бы их в *.txt формате и уже решил бы задачу.
Ну а пока начал с VBA
Пусть прога сгенерировала число 3 (т.е. номер вопроса). Затем надо выделить фрагмент от "#А3" до "А4" и скопировать в новый файл. Потом снова генерирую новое случайное число.
За незнанием языка сделал такую штуковину для выделения фрагмента :
Dim oRng As Range
Set oRng = ActiveDocument.Range
i = InStr(1, oRng, "#А3")
j = InStr(1, oRng, "#А4")
oRng.SetRange i, j
oRng.Copy
Application.Documents.Add.Range.PasteAndFormat (wdPasteDefault)
Функцией Instr пользовался в VB6. Эта штуковина в некоторых местах дала сбой. Получаю не весь фрагмент!
Подскажите, как правильно найти фрагмент?
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #1
Добавлено: 03.03.10 15:08
В корне неправильный подход. Воспользуйтесь объектом Find и свойством oRng.Find. Прога должна сгенерить вместо 3 "#А3". Потом объектe find скармливаешь текст "#А3" и он его ищет. Потом i=oRng.end+1. Потом Find ищет "#А4". Потом j = oRng.start-1. Ну и в конце Set oRng = ActiveDocument.Range(i,j). Только перед поиском #A4 не забыть сделать Set oRng = ActiveDocument.Range. Instr ищет в переменной, а не в объекте oRng. Отсюда и косяки.