Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.29.145] |
|
Сообщ.
#1
,
|
|
|
Есть документ Word. В документе выгрузка из базы данных. В тексте куча гамна, периодически в тексте проходит строка типа
Фамилия Иванов Имя Петр Отчество Иванович Нужно эти данные вставить в sql. Нужную строку по признаку "Фамилия" осуществляю по коду function FindInDoc(const aWdDoc : Variant; const aSearchText : String) : Variant; const wdFindStop = 0; //Завершить поиск при достижении границы диапазона. var wdRng, wdFind : Variant; begin VarClear(Result); //Диапазон, охватывающий всё содержимое документа. wdRng := aWdDoc.Content; //Настройка поиска. wdFind := wdRng.Find; //wdFind.ClearFormatting; wdFind.Text := aSearchText; //True - поиск вести от начала - к концу диапазона. wdFind.Forward := True; //wdFindStop - завершить поиск при достижении границы диапазона. //wdFind.Wrap := wdFindStop; //Поиск текста. if wdFind.Execute then Result := wdRng; end; Как выбрать следующее слово за найденным? Типа Word.ActiveDocument.Words? |
Сообщ.
#2
,
|
|
|
Если это именно строчка (т.е. заканчивается переводом строки), то брать от найденного начала до конца параграфа, выкусывать строку целиком, а потом крутить ее в коде как захочется
|
Сообщ.
#3
,
|
|
|
Цитата JonyBest @ Как выбрать следующее слово за найденным? Покопаться в хэлпе для Word VBA и найти\выбрать метод(ы) перемещения Range или Selection на следующее слово. Например, по простому можно сделать так R.Collapse wdCollapseEnd 'передвигаем на конец выделения R.Move wdWord, 1 'передвигаем на начало следующего слова R.MoveEnd wdWord, 1 'расширяем до конца слова, включая хвостовые пробелы Но при этом нужно учитывать, что 1) будет выбрано следующее слово вместе со всеми хвостовыми пробелами (в строке их можно отсечь функцией TrimRight), 2) если фамилия или имя являются составными (несколько слов через дефис), то будет выбрано только первое слово до дефиса. Поэтому для сложных слов вместо простого MoveEnd можно использовать MoveEndUntil до одного из заданных символов конца слова. Например R.MoveEndUntil " .;" + vbTab |