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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 21:32   #1
pdoronin
Новичок
Джуниор
 
Регистрация: 27.07.2009
Сообщений: 1
По умолчанию Лишние символы "снос строки" в сноске

Часто приходится составлять огромные документы из разных источников.
Иногда в сноске появляются нередактируемые символы "снос строки", а уже только после них отображаются сноски к тексту.
Подскажите, пожалуйста, как это вылечить?
Спасибо!
pdoronin вне форума Ответить с цитированием
Старый 27.07.2009, 21:53   #2
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Как говорится, документ в студию.
Так тяжело сориентироваться, о чём речь.
Такого термина "сноса строки" не знаю. Знаю "Разрыв строки".
Busine2009 вне форума Ответить с цитированием
Старый 29.07.2009, 23:37   #3
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Это делается следующим способом без средств программирования и больших познаний.
1. Вид - Обычный.
2. Вид - Сноски.
3. Выделяете все сноски (Ctrl + A).
4. Вызываешь Диалоговое окно Найти и заменить.
5. В поле Найди вставляешь Разрыв строки.
6. В поле Заменить - пробел.
7. Заменить все. В оставшейся части документа разрывы строк не удаляй.
У тебя в некоторых случаях появляются двойные пробелы. Если хочешь их можно превратить в одинарные. Для этого:
1. Выдели все сноски.
2. Найти и заменить.
3. В поле Найти вводишь знак пробела.
4. Ставишь галочку Подстановочные знаки.
5. Ищешь Число вхождений.
6. Перед точкой с запятой вводишь 2.
7. В поле Заменить вводишь пробел.

У меня есть, правда, макросы, но такие не очень, можешь их использовать.
Удаление Разрывов строк:
Код:
Sub main()
'Замена Разрыва Строки на пробел
With Selection.Find
        .ClearFormatting
        .Text = "^l"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
 End With
 Application.Browser.Target = wdBrowsePage
 End Sub
А вот код для удаления пробелов в количестве более 1 штуки:
Код:
Sub main()
'Удаление лишних пробелов
With Selection.Find
        .ClearFormatting
        .Text = " {2;}"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
With Selection.Find
        .Text = "^s{2;}"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Application.Browser.Target = wdBrowsePage
End Sub
Выделяешь сноски и применяешь эти макросы.

Вот ещё один макрос. Его можешь применять, не выделяя сноски. Только этот макрос не заменяет 2 пробела, если один из них бывший Разрыв строки.
Код:
Sub main()
'Удаление во всех сносках Разрыва строки и больше одного пробела
Dim x As Footnote
For Each x In ActiveDocument.Footnotes
With x.Range.Find
        .Text = "^l"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Next
For Each x In ActiveDocument.Footnotes
With x.Range.Find
        .Text = " {2;}"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Next
For Each x In ActiveDocument.Footnotes
With x.Range.Find
         .Text = "^s{2;}"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Next
End Sub

Последний раз редактировалось Busine2009; 30.07.2009 в 00:38.
Busine2009 вне форума Ответить с цитированием
Старый 30.07.2009, 08:51   #4
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Busine2009 Посмотреть сообщение
Только этот макрос не заменяет 2 пробела, если один из них бывший Разрыв строки.
А почему не менять сразу "([^32^l])@" на пробел?
garik64 вне форума Ответить с цитированием
Старый 30.07.2009, 09:21   #5
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Вот модифицированный макрос:
Код:
Sub main()
'Удаление во всех сносках Разрыва строки и больше одного пробела
Dim x As Footnote
For Each x In ActiveDocument.Footnotes
With x.Range.Find
        .Text = "([^32^l])@"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindStop
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Next
End Sub
Только он тоже не справляется с 2 пробелами, один из которых уже был в документе, а второй - это бывший Разрыв строки

Или вот так ещё короче:
Код:
Sub main()
'Удаление во всех сносках Разрыва строки и больше одного пробела
Dim x As Footnote
For Each x In ActiveDocument.Footnotes
With x.Range.Find
        .Text = "([^32^l])@"
        .Replacement.Text = " "
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
End With
Next
End Sub

Последний раз редактировалось Busine2009; 30.07.2009 в 09:42.
Busine2009 вне форума Ответить с цитированием
Старый 01.08.2009, 07:58   #6
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

"([^32^l])@" - это не удаляет двойные неразрывные пробелы.
Busine2009 вне форума Ответить с цитированием
Старый 02.08.2009, 14:55   #7
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Busine2009 Посмотреть сообщение
"([^32^l])@" - это не удаляет двойные неразрывные пробелы.
Значит, вместо ^32 надо использовать ^w - ищет любое количество любых пробелов, т.е. простых, неразрывных и табуляцию. Загвоздка в том, что ^w нельзя использовать с подстановочными знаками. Следовательно, опять надо делать в два прохода: ^w менять на заведомо невозможную последовательность - ЩЪКТРНЬЦ, например , ^l на неё же, а потом любое количество этого непроизносимого -на простой пробел.
garik64 вне форума Ответить с цитированием
Старый 05.04.2010, 19:37   #8
Wassail
Пользователь
 
Регистрация: 05.04.2010
Сообщений: 36
По умолчанию Лишние строки в разделе сносок между линией и текстом

Проблема следующая.
В большом документе word 2007 (docx) в разделе сносок между линией начала сносок внизу страницы и самими сносками вдруг появились три лишних строки, знаки абзаца. Сносок много и поехала крыша с разбивкой на страницы, смещением разделов, нумерацией и т.д.
Да, при создании нового документа между этой граничной линией и сносками лишних строк не появляется, всё нормально. Как ни пытался, не могу убрать строки выше текста сносок (интервал перед стоит равным 0!). Что делать? Может кто знает? Буду благодарен за совет.
Wassail вне форума Ответить с цитированием
Старый 06.04.2010, 09:19   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Скриншот приложите и опишите как Вы пытались удалить эти лишние абзацы. Попробуйте перейти к сноскам и удалить два абзаца подряд через поиск и замену:
Найти: ^p^p
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 06.04.2010 в 09:23.
viter.alex вне форума Ответить с цитированием
Старый 06.04.2010, 10:45   #10
Wassail
Пользователь
 
Регистрация: 05.04.2010
Сообщений: 36
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Скриншот приложите и опишите как Вы пытались удалить эти лишние абзацы. Попробуйте перейти к сноскам и удалить два абзаца подряд через поиск и замену:
Найти: ^p^p
Нет замена не работает - щелкаю по сноске, вызываю диалог спец заменитель - не заменяет (сообщает искомый элемент не найден). Да, в доке почти тыща страниц.
Вот скриншоты того что вдруг стало (первый) и и как должно быть и было вначале (второй):
Изображения
Тип файла: jpg Сноска_в_старом_док_лишние_строки.jpg (15.9 Кб, 219 просмотров)
Тип файла: jpg Сноска_в_новом_док_как_надо.jpg (13.7 Кб, 132 просмотров)
Wassail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как разделить данные в одной ячейке, которые разделены ";", на строки? Margaritka Microsoft Office Excel 2 10.03.2009 20:16
Неполные строки "едут" в MS Word 2007 при изменении масштаба. mirotvoretc Microsoft Office Word 12 05.03.2009 12:07
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43