Статьи из блога
Избавление от принудительных разрывов: совет читателя
Евгений Артамонов прислал совет по борьбе с принудительными разрывами строк в текстовых документах. Ранее на сайте были опубликованы две заметки по этой теме:
Как удалить принудительный разрыв строки в Word
Принудительное разбиение строки с помощью макроса
Совет от Евгения Артамонова
Поделюсь своим опытом работы с разрывами в текстовых документах.
В виду специфики работы приходится очень часто использовать вставку текста из окна браузера (а там или текстовый формат, или насильно приведенный к
текстовому).
В первом случае в конце каждой строки стоят разрывы и подходит описанный выше метод (А.К.: речь идет о методе из первой заметке по ссылке), но только начинаю я работу с того, что заменяю все знаки абзацев (^p) на какой-нибудь экстравагантный символ (обычно хватает знака табуляции, но бывали случаи замены на набор из 5 знаков вопросов ;).
После этого по описанной методике заменяю:
1) все тире+разрывы строк (-^l) на пустоту (в редких случаях ломаются слова с дефисом - потом автопроверка - на документ в 50 листов - 20-30 случаев);
2) все разрывы строк (^l) на пробелы;
3) все двойные пробелы на одинарные (повторять до тех пор, пока не будет 0 найденных элементов);
4) внедренный ранее символ вместо абзаца заменяю на абзац.
Второй вариант предполагает проход по тексту того же PHP и порчей его до неудобоваримого вида – простым вариантом является простановка не разрыва строки, а конца абзаца. И если текстовый формат в таком случае оставлял шанс найти начало каждого абзаца по отступу из (5-8 пробелов), то в этом случае прямых признаков разделения не найти.
А если нет прямых признаков, тогда используются вторичные:
1) заменить все последующие комбинации символ+абзац (.^p, ;^p, :^p – тут точка, точка с запятой и двоеточие выступают как символ) на символ + табуляция (^t);
2) заменить сдвоенный абзац (^p^p) на табуляцию (^t);
3) заменить все абзацы (^p) на пробел;
4) заменить все табуляции (^t) на абзац (^p);
5) заменить все сдвоенные пробелы на одинарные.
Опытным путем было выявлено, что Пункт 1 пропускает или ставит лишние знаки в 5-10 % (зависит от исходного текста и злобности кодировщика для порчи текста). Ещё одно замечание: в случае большого документа (100 и более
страниц) – процесс замены абзацев на пробелы может занять несколько минут (иногда Word не выдерживает и вылетает, так что сохраняемся ...).
Где это применялось: 1) при «копировании» книг с полубесплатных источников,
2) при работе с частично раскрытыми частями диссертаций и прочих научных трудов.
Метки: поиск и замена | разрывы | форматирование
Просмотров: 26062
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 полезных заметок о колонтитулах
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- SQL для начинающих: изучите SQL онлайн за 9 часов
- Word 2007: полотно, рисунки, линии
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне: ностальгия по DOS
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое выделение идущих рядом слов
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание списков в документе
- Быстрое удаление границ у таблицы
- Быстрый доступ к диалоговому окну Параметры страницы
- Быстрый поиск форматированного текста
Комментариев: 9
Как корректно написать макpос на ворде, для удаление разрыва страницы перед таблицами так чтобы не объединил этих таблиц
Целью делать такой макрос пока не задавлся, но постановка задачи интересная - буду пробовать реализовать.
Евгений, очень интересно!
приступив к работе осознал некоторую некорректность или недопонимание.
В Word-е при разрыве страницы, даже если этот разрыв делается внутри таблицы, перед таблицей на новой странице принудительно добавляется символ абзаца. Так что простое удаление разрывов страниц (^m) приведёт к необходимому результату.
Вот макрос писаный на автомате:
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 12.08.2011 EArt
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^m"
.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
Спасибо огромное очень помогла решить эту проблемку и макрос тоже очень аккуратно написано, ну среди с этим возникает такой вопрос, если шапка таблицы без данных то есть данные на следующей страницы, а сама шапка в конце страницы, поэтому их надо объединить, а если там хот одна строка с данными то можно оставить.
Спасибо огромное!!! Раньше вручную корректировала, а теперь все делается автоматически )))))))
мммм ... всегда пожалуйста ... за аккуратность макроса благодарить необходимо ребят из MS за их инструмент записи макросов ... этот макрос занял у меня 15 секунд, на его оптимизацию может потребоваться ещё час (проверка исключений, лишних операторов и т.п), но если работает и заказчик рад, то не вижу смысла переделывать ;)
что касается пожелания про отслеживание первых строк (шапки) таблицы так и не понял - в чём суть задания ... ;)
ну как убрать раэрыв раэдела ? это возможно?!
Тут у Вас такие древние даты........Может кто-то откликнется?..
У меня срочный вопрос- как удалить пробелы между буквами в словах? и как выделить все слова которые так написаны? Поясняю- стоит шрифт Calibri Body, а в тексте два разных шрифта и на просьбу выделить все слова с одинаковым форматированием выделяет весь текст. Если поменять шрифт на другой эффект различия пропадает, а слова видимые в калибри другим шрифтом остаются с пробелами между БУКВАМИ.
Прошу прощения если не в тему