На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Помогите получить значения из Wordа, Помогите получить значения из Wordа
Есть документ Word. В документе выгрузка из базы данных. В тексте куча гамна, периодически в тексте проходит строка типа
ExpandedWrap disabled
    Фамилия Иванов      Имя Петр      Отчество Иванович

Нужно эти данные вставить в sql.
Нужную строку по признаку "Фамилия" осуществляю по коду
ExpandedWrap disabled
     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?
Если это именно строчка (т.е. заканчивается переводом строки), то брать от найденного начала до конца параграфа, выкусывать строку целиком, а потом крутить ее в коде как захочется
Сообщение отредактировано: Fr0sT -
Codero ergo sum
// Программирую — значит, существую
Цитата JonyBest @
Как выбрать следующее слово за найденным?

Покопаться в хэлпе для Word VBA и найти\выбрать метод(ы) перемещения Range или Selection на следующее слово.
Например, по простому можно сделать так
ExpandedWrap disabled
    R.Collapse wdCollapseEnd  'передвигаем на конец выделения
    R.Move wdWord, 1  'передвигаем на начало следующего слова
    R.MoveEnd wdWord, 1 'расширяем до конца слова, включая хвостовые пробелы

Но при этом нужно учитывать, что 1) будет выбрано следующее слово вместе со всеми хвостовыми пробелами (в строке их можно отсечь функцией TrimRight), 2) если фамилия или имя являются составными (несколько слов через дефис), то будет выбрано только первое слово до дефиса. Поэтому для сложных слов вместо простого MoveEnd можно использовать MoveEndUntil до одного из заданных символов конца слова. Например
ExpandedWrap disabled
    R.MoveEndUntil " .;" + vbTab
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0855 ]   [ 20 queries used ]   [ Generated: 18.10.17, 16:59 GMT ]