Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 00:18   #1
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию Обработка текста (Regex'ы)

Есть вот такой вот текст (вообще говоря достаточно части приходиться работать с таким вот текстом). см. вложение. 6 Записка.doc
задача его нормально оформить. сейчас это фактически делает руками специальная девочка. хочу этот труд ускорить, автоматизировать.
больше всего проблем доставляют формулы.
Стремлюсь я к красивому варианту с табами ( ты когда то и давал пример) и нумерацией вида <пункт>.<номер в пункте>
в конце файла ТЗ.doc есть примеры

Алгоритм :
найти номер формулы в тексте.обычно как то криво но однозначно в записке присутствует - в виде (1) в конце строки как в данном случае.

Код:
  Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True 'Производим поиск по всему тексту
    
    text1 = Selection.Text

    objRegExp.Pattern = "(    )+\([0-9]([\.\-0-9]+)?\)" 'Шаблон поиска
    Set objSubMatches = objRegExp.Execute(text1)
                  
                  
                  
            For j = objSubMatches.Count - 1 To 0 Step -1
                     Set objSubMatch = objSubMatches(j)
                    Debug.Print "текст """ & objSubMatch.Value _
                                  & """ начинается с " & objSubMatch.FirstIndex & " символа" & _
                                  " длиной " & objSubMatch.Length & " символов"
            Next j
шаблон в зависимости от документа можно и подправить.
дальше надо из строки потереть этот самый найденный элемент и все пробелы и табы. то что осталось (формула, причем иногда набранная простым текстом) вставить корректно. для этого функции есть NumberEquation. спасибо viter_alex -здесь неоднократно выкладывались.

Вот собственно на обработке строки я и завис (( может кто помочь ? если кто полностью решит задачу - согласен и заплатить.
bdfy вне форума Ответить с цитированием
Старый 16.02.2011, 19:20   #2
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

по идее moveuntil должен бы помочь. но знак обрыва строки он не обрабатывает (
Set rng1 = oDoc.Range(Start:=oRng.Start + objSubMatch.FirstIndex, End:=oRng.Start + objSubMatch.FirstIndex + objSubMatch.Length)

rng1.MoveStartUntil Cset:=Chr(10), Count:=wdBackward
rng1.Select
как поступить ? как строку выделить ?
bdfy вне форума Ответить с цитированием
Старый 01.03.2011, 20:37   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,154
По умолчанию

см. вложение. 6 Записка.doc
ГДЕ?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 02.03.2011, 01:27   #4
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

вот например.
Вложения
Тип файла: doc записка В4.2.doc (303.5 Кб, 12 просмотров)
bdfy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текста StillFree Microsoft Office Word 5 21.06.2009 05:59
Обработка текста JRcoker Общие вопросы Delphi 5 31.07.2008 23:35
обработка текста pvleo Фриланс 4 14.07.2008 05:19
Обработка текста Absent Помощь студентам 2 20.05.2008 23:17
Обработка текста GAGARIN-NEW Общие вопросы Delphi 7 06.10.2007 15:25