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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 03:43   #1
mekkanizer
 
Аватар для mekkanizer
 
Регистрация: 15.04.2012
Сообщений: 7
По умолчанию Сценарий для обратботки текста

Доброго времени суток! Выручите плз или хотя бы наставьте на путь истинный что надо делать.
В общем ситуация такая что дан текстовый, полностью текстовый .doc (без таблиц картинок, etc.) так вот в нем нужно сделать следующую вещь:
документ начинается с пустой строчки и идет в формате
[пустая строка]
xxx
yyy
zzz
zzz
zzz(может быть любое кол-во zzz строк)
И ПОТОМ СНОВА [пустая строка]
нужно оставляя каждый раз первые две строки (ххх и ууу) стирать ВСЕ zzz вплоть до следующей пустой строки. То есть напрашивается использование while но мои познания крайне скудны, поможите хоть советом)

Спасибо.
mekkanizer вне форума Ответить с цитированием
Старый 16.04.2012, 01:11   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Попробуй такую штуку. В конце документа обязательно должна быть пустая строка иначе макрос зациклится
Код:
Sub test()
    'Переменные для хранения предыдущей и текущей позиции курсора
    Dim nPrevPos As Long, nCurrPos As Long
    Selection.HomeKey wdStory
    Do
        Selection.MoveDown Count:=3
        nPrevPos = Selection.Start
        Do While Selection.Paragraphs.First.Range.Text <> Chr(13)
            Selection.MoveDown
        Loop
        nCurrPos = Selection.Start
        If nPrevPos <> nCurrPos Then
            ActiveDocument.Range(nPrevPos, nCurrPos).Delete
        End If
    Loop While nCurrPos <> nPrevPos
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 16.04.2012, 09:38   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

если zzz подразумевает одинаковые строки, то так будет быстрее:

Код:
Sub Delete_ZZZ()
  Selection.HomeKey wdStory
  While Selection.Find.Execute("zzz^pzzz^p", False, False, False, False, False, True, wdFindContinue, False, "zzz^p", wdReplaceAll)
  Wend
  Selection.Find.Execute "zzz^p^p", False, False, False, False, False, True, wdFindContinue, False, "^p", wdReplaceAll
End Sub
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сценарий входа demontools Помощь студентам 10 24.12.2011 01:11
Написать простой сценарий на JS elris Фриланс 4 05.10.2011 17:52
сценарий на php kettyrus Помощь студентам 0 03.11.2009 11:36
Сценарий Master-Detail в WPF Antonio_M Общие вопросы .NET 0 28.08.2009 10:33