Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 10 ]
- Solderer
- рядовой
- Неактивен
- Зарегистрирован: 05.06.2010
- Сообщений: 4
Тема: Поиск и замена текста в значениях полей
Создал оглавление с номерами страниц и заполнителем "...". Необходимо в этом содержании удалить номера страниц, но заполнитель табуляции оставить. Страницы проставляются вручную перед сдачей работы в архив. Делается это в пояснительной записке к диплому по рекомендации преподавателя.
Проблема такая, что в окне поиска по строке "^t^#" символ табуляции и следующий за ним номер страницы находится (поиск без подстановочных знаков), но при выполнении этих же действий в окне замены ничего не находится. Соответственно нет возможности автоматически заменить последовательность "^t^#" на "^t".
Бился с задачей на VBA, но в силу своего ничтожного опыта ничего не получилось, только истратил кучу времени.
Пока остановился на прикрывании номеров страниц надписью с заливкой белым без контурной рамки, однако из спортивного интереса хочется победить данную проблему.
Надеюсь на вашу помощь. Заранее спасибо.
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Поиск и замена текста в значениях полей
Поиск и замена вам могут не помочь. Так как при обновлении оглавления все встанет на свои места.
Предлагаю другой, но точно сработающий вариант.
Выделите оглавление полностью и нажмите Ctrl+Shift+F9. Ваше оглавление превратится просто в текст, номера страниц - в том числе. Останется только у текста оглавнения задать требуемый формат шрифта и поставить нужные вам цифры - можно даже не в ручную, а здесь, чтобы не нужно было на распечатке ручкой вручную эти листы проставлять.
Но вот зачем нужно проставлять номера вручную - непонятно.. Получается, что у вас в каждом разделе диплома должна идти своя нумерация страниц а у вас получается общая?? Немного не понятно.
Отредактировано andrkar (06.06.2010 07:23:08)
- Solderer
- рядовой
- Неактивен
- Зарегистрирован: 05.06.2010
- Сообщений: 4
Re: Поиск и замена текста в значениях полей
Идея в ручной расстановке номеров страниц заключается в том, что если в процессе просмотра пояснительной записки преподавателем он захочет изменить порядок разделов/подразделов или что-то выбросить/добавить, то нумерация полностью поплывет и придется перепечатывать всю пояснительную записку. Изначально мне такая идея тоже казалась дурной, но столкнувшись на деле с проблемой понял ее преимущество.
По поводу обновления оглавления оно и понятно, что номера страниц появятся снова, поэтому я и хочу сделать скрипт. Вот только странности с поиском/заменой не дают этого сделать. Пробовал в ворде 2к3 и 2к7 — поведение одинаковое.
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Поиск и замена текста в значениях полей
И чем вам не подходит предложенный вариант?? Про него вы ничего не сказали..
Тут уж лучше - пусть сначала проверяют в электронном виде, а распечатывать - когда уже все готово. Либо, как это и делают - в каждом разделе начинать нумерацию заново.. Тогда нужно будет перераспечатывать только измененные разделы.
Отредактировано andrkar (06.06.2010 16:34:43)

- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Поиск и замена текста в значениях полей
А ларчик просто открывался. Поле TOC, которое реализует содержание, создаёт набор полей HyperLink и PageRef, разделённых табуляцией. Всё, что нужно сделать, это выделить содержание и перебрать поля внутри него, делая скрытым текст полей PageRef. Это и делает предлагаемый макрос. После обновления содержания форматирование конечно слетает, и макрос нужно запустить снова.
Sub HidePageNumbersInTOC()
Dim ofld As Field
For Each ofld In Selection.Fields
If ofld.Type = wdFieldPageRef Then
ofld.Result.Font.Hidden = True
End If
Next
End Sub
Единственный недостаток, что заполнитель продлевается до конца, но это тоже можно избежать, напечатав перед полем PageRef пару-тройку неразрывных пробелов после того, как сделали текст скрытым. В коде это будет выглядеть так:
ofld.Result.InsertBefore String(3, Chrw(160))
Лучше день потерять — потом за пять минут долететь!
- Solderer
- рядовой
- Неактивен
- Зарегистрирован: 05.06.2010
- Сообщений: 4
Re: Поиск и замена текста в значениях полей
andrkar, предложенный Вами вариант можно использовать, однако если потребуется обновить оглавление придется его заново вставлять. Да и ручное удаление страниц не впечатляет.
Про проверку в электронном виде не говорю, т. к. преподаватели любят "почеркать", поэтому просят на бумаге приносить. Да и на бумаге разные ляпсусы лучше бросаются в глаза, имхо.
Про отдельную нумерацию разделов увы ничего не знаю и предполагаю, что не "прокатит". Тут бы нужно внимательно изучить ГОСТ, но, увы, сейчас на это нет времени.
viter.alex, спасибо!
Все и впрямь проще некуда. По поводу продолжения заполнителя, то можно табуляцию в стилях настроить. Но за подсказку со вставкой нескольких пробелов спасибо, пригодится.
Задача решена, однако спортивный интерес терзает: отчего все таки поиск в поле работает, а поиск с заменой нет, при одинаковом поисковом запросе. Может кто просветит.
Отредактировано Solderer (06.06.2010 21:40:00)

- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Поиск и замена текста в значениях полей
Solderer пишет:отчего все таки поиск в поле работает, а поиск с заменой нет, при одинаковом поисковом запросе
Я думаю, что причина в невозможности замены в таком поле. Т.е. найти можно, а вот заменить нельзя, поскольку содержимое поля формируется автоматически. Думаю, что то же самое касается и других ссылочных полей: указателя, списка иллюстраций, таблицы ссылок.
Лучше день потерять — потом за пять минут долететь!
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Поиск и замена текста в значениях полей
Александр - решение действительно - очень элегантное!!!!
- Solderer
- рядовой
- Неактивен
- Зарегистрирован: 05.06.2010
- Сообщений: 4
Re: Поиск и замена текста в значениях полей
Странные дела. Макрос проработал очень мало времени, после чего текст полей wdFieldPageRef перестал скрываться. Может где в настройках ворда чего наковырял и не заметил, а может какой-то глюк, но переустановка офиса не помогла. При этом, после выполнения макроса значение параметра Hidden становится равным минус единице, независимо от того что присваивать этому параметру: True или число. Изначально же, до применения макроса, значение равно нулю. Кстати, тип параметра отчего-то long, а не boolean как, поидее, должно быть. Выход то я нашел быстро и вообще удаляю эти поля. Кстати, это действие визуально быстрее чем скрытие текста поля.
Вот конечный макрос, может кому-то тоже пригодится.
Sub HidePageNumbersInTOC()
ActiveDocument.Sections(Selection.Information(wdActiveEndSectionNumber)).Range.Select ' выделить все содержимое текущего раздела
Dim ofld As Field
For Each ofld In Selection.Fields ' цикл по обработке всех полей в выделенном фрагменте
If ofld.Type = wdFieldPageRef Then
ofld.Delete ' удалить поле wdFieldPageRef
End If
Next
Application.Selection.EndOf ' снять выделение
End Sub
Здесь я автоматически выделяю содержимое раздела (у меня содержание является самостоятельным разделом документа), затем в выделенном фрагменте удаляются поля wdFieldPageRef и выделение снимается.
Отредактировано Solderer (12.06.2010 18:40:42)

- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Поиск и замена текста в значениях полей
Что ж, видно нет совершенства. Добавлю от себя, что выражение
ActiveDocument.Sections(Selection.Information(wdActiveEndSectionNumber)).Range.Select
можно заменить на более простое:
Selection.Sections.Last.Range.Select
ну и снятие выделения производится иначе:
Selection.Collapse wdCollapseEnd 'Свернуть в конец выделения
Хотя внешне это может быть не заметно.
Лучше день потерять — потом за пять минут долететь!
Сообщений [ 10 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Поиск и замена текста в значениях полей
Когда-то давно люди пересели с пишущих машинок за клавиатуру компьютера. И приветствовал их Microsoft Word. На портале о Microsoft Office Word вы узнаете про: как в ворде сделать по алфавиту.
И дал он им жирный шрифт, полужирный, а еще курсив, множество стилей, таблиц и рисунков. Теперь те времена уже вошли в историю, а Word уходить не собирается. Наш сайт о Microsoft Office Word даст ответ про: коды для ворд 2010.
Наоборот он все растет, расширяется, обзаводится новыми функциями и версиями.
Хотите доступную и понятную информацию по всем тонкостям работы с этим текстовым редактором? На портале о Microsoft Office Word вы узнаете про: ворд сохранить в пдф.
Приходите на форум сайта Ворд Эксперт, в котором обсуждаются все вопросы и проблемы, связанные с различными версиями Word. На портале о Microsoft Office Word вы узнаете про: антонимы к слову рэсси.
Если вы просто супер профессионал, то сможете предложить свои наработки в соответствующем разделе, если хотите совершенствовать свои знания, вас научат писать макросы, выбрать наиболее удобные настройки для тех операций, что часто делаете, предложат списать готовые решения или дать заявку. На портале о Microsoft Office Word вы узнаете про: ворд 2007 не открывает файл doc.
Форум отличается от многих компьютерных форумов прежде всего тем, что на Ворд Эксперт ориентация идет на простого или продвинутого пользователя, а не на горстку профи, которые общаются на птичьем языке. На портале о Microsoft Office Word вы узнаете про: как поставить между инициалами пробел в ворде.
Все понятно, доступно и наглядно. А если какой-либо информации по редактору вам все-таки не хватает, оставляйте пожелание в соответствующем разделе. Наш сайт о Microsoft Office Word даст ответ про: надпись біла поверх ячеек.