Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Копировать часть текста из Word'а Добавлено: 01.03.10 16:36  

Автор вопроса:  Leon29
Добрый день!

Столкнулся с проблемой. Есть вордовские документы (3 шт.) с вопросами (на подобии теста на ЕГЭ). Мне надо на основе этих трёх файлов создать 50 (а может и больше) файлов-вариантов с разными вопросами.Т.е. в каждый вариант входят любые случайные вопросы из исходных файлов. Все вопросы начинаются с "#A(номер вопроса)"

Если бы вопросы не содержали картинок и формул, то сделал бы их в *.txt формате и уже решил бы задачу.

Ну а пока начал с VBA

Пусть прога сгенерировала число 3 (т.е. номер вопроса). Затем надо выделить фрагмент от "#А3" до "А4" и скопировать в новый файл. Потом снова генерирую новое случайное число.
За незнанием языка сделал такую штуковину для выделения фрагмента :
Dim i, j As Long
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. Отсюда и косяки.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам