Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
AVRora
1

Считывать каждую строку в переменную

29.12.2008, 18:46. Просмотров 1326. Ответов 3
Метки нет (Все метки)

Дано:

Офигенно большой текст.
В нем каждая строка заканчивается 'Enter' = абзацем (потому что текст взят из ТХТ файла), а начинатся строка может с нескольких пробелов (от 2 до 10 шт)

Надо:

1 - считывать каждую строку в переменную или еще куда-нибудь;
2 - в каждой считанной строке заменять пробелы, которые идут в подряд (например '_______'), на знак 'табуляция';
3 - в каждой строке символ ('Enter' = абзац) заменять на 'пробел'

ПОДСКАЖИТЕ КАК ЭТО ЗАЛАБАТЬ МАКРОСОМ?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2008, 18:46
Ответы с готовыми решениями:

Как написать переменную, что бы каждую неделю ячейки перемещались на пять вниз?
Помогите плиз! Как написать переменную, что бы каждую неделю ячейки...

Макрос удаляющий каждую 3 строку
Всем привет! Нужен макрос, который удалит каждую 3 строку в таблице. Пример...

Удалить каждую десятую строку
При написании макроса (удаление 9 из 10 строчек большой таблицы) не могу...

Прокоментировать каждую строку программы
Private Sub CommandButton1_Click() UserForm1.Hide End Sub Private Sub...

Вывод в каждую строку среднего значения
Добрый вечер! по заданию я составил для кнопки "расчет" событие расчета...

3
Comanche
31.12.2008, 13:03 2
Лучший ответ Сообщение было отмечено как решение

Решение

Код написан из двух предположений:
1. На табуляцию меняем только НАЧАЛЬНЫЕ пробелы каждой строки
2. Ширина страницы позволяет каждой строке текста уложиться действительно В ОДНУ СТРОКУ (иначе будет неверно работать строчка, комментарии к которой обрамлены '(***)').
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub Main()
    Options.ReplaceSelection = True  '  <<< чтобы вставка текста ЗАМЕНЯЛА выделение
    '
    Selection.HomeKey Unit:=wdStory  '  <<< идём в начало документа
    rez = 1  '  <<< главное здесь - чтобы больше нуля, просто чтобы начать цикл
    While rez > 0
        Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend  '  <<< выделяем строку
        st = Selection.Text  '  <<< считываем из неё текст в переменную st
        st = Left(st, Len(st) - 1)  '  <<< избавляемся от символа 'Enter' в конце строки
        st = LTrim(st)  '  <<< удаляем начальные пробелы
        '
        If st <> '' Then  ' <<< защита от самой последней строки
            st = vbTab & st  '  <<< добавляем вместо них символ табуляции
            Selection.TypeText Text:=st  '  <<< впечатываем ПОВЕРХ выделения
            rez = Selection.MoveDown(Unit:=wdLine, Count:=1)  '  <<< переходим на след. строку...
            Selection.HomeKey Unit:=wdLine  '  <<< ...и встаём в её начало
        Else
            rez = 0  ' <<< для срочного выхода из цикла
        End If
    Wend
    Selection.HomeKey Unit:=wdStory  '  <<< (***) возвращаемся в начало документа (***)
    '
    ' Теперь разбираемся с концевыми Enter-ами:
    '
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = '^p'  '  <<< знак абзаца
        .Replacement.Text = ' '  '  <<< пробел
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll  '  <<< собственно, запуск замены
End Sub
Comanche
31.12.2008, 13:06 3
Sorry, опечатка:
Я обрамил знаками '(***)' не ту строку. Надо было следующую:
Visual Basic
1
Selection.HomeKey Unit:=wdLine  '  <<< ... (***) и встаём в её начало (***)
AVRora
04.01.2009, 16:44 4
Спасибо за принцип, если еще будут вопросы, то знаю от чего оттолкнуться!
Ну а тем, кому в падло самому писать макросы предлагаю ссылку на сайт чувака, который рубит в ВБА хорошо и уже написал много нужных примочек, и, что самое главное пока не требует за них бабок.
С помощью его шаблонов я очень облегчил себе жизнь:
http://antorlov.chat.ru/verstka.htm
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2009, 16:44

Упорядочить каждую строку матрицы в данной программе по возрастанию ее элементов
Упорядочить каждую строку матрицы в данной программе по возрастанию ее...

Как считывать построчно элементы в таблице word и записывать в ячейки Excel
Добрый день, вопрос такой существует Word файл с таблицей состоящей из 4...

Поместить каждую строку БД в переменную ( ООП )
Есть таблица со столбцами category, full-story, short-story, title, id и тд....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru