1

Тема: Как сделать на дополнительной странице изменяющийся текст?

Вопрос от Michael:
Необходимо в конце документа сделать на дополнительной странице автоматически изменяющийся текст, включающий количество страниц в документе цифрой и прописью. Например, имеем пятистраничный документ. Так и пишем: прошито, пронумеровано 5 (Пять) листов.

2

Re: Как сделать на дополнительной странице изменяющийся текст?

Это можно сделать таким способом. Единственный недостаток, это несоответствующее склонение слова «лист».

Sub insAddPage()
  '
  'Вставка дополнительной страницы с текстом
  'Вывод количества страниц цифрой и прописью
  '
  Dim oFld As Field
  With Selection
    .LanguageID = wdRussian
    'Переходим в начало документа
    .EndKey wdStory
    'Вставляем разрыв страницы
    .InsertBreak wdSectionBreakNextPage
    'Пишем нужный текст
    .TypeText "Прошито, пронумеровано "
    'Добавляем поле с количеством страниц
    Set oFld = .Fields.Add(.Range, wdFieldNumPages)
    'Помещаем это поле в закладку
    ActiveDocument.Bookmarks.Add "ПрошитоЛистов", oFld.Result
    'Добавляем открывающую скобку
    .TypeText " ("
    'Вставляем поле для отображения заклаки в виде текста
    .Fields.Add .Range, wdFieldEmpty, "= ПрошитоЛистов  \* CardText", False
    'Завершаем печать текста
    .TypeText ") лист(ов)"
  End With
End Sub
Лучше день потерять — потом за пять минут долететь!

3

Re: Как сделать на дополнительной странице изменяющийся текст?

viter.alex пишет:

Это можно сделать таким способом. Единственный недостаток, это несоответствующее склонение слова «лист».

Александр, у Михаила (автора вопроса) что-то не получается сделать реплику по поводу решения, поэтому я публикую его ответ от своего имени. Михаил пишет:

Спасибо большое за Вашу помощь. Однако, у Вас получился макрос не для шаблона - он сам добавляет страницу. При автоматическом обновлении (Ctrl +A, F9) он выдает неверный результат. А второй раз запустить макрос - как ни крути не получается.

Грешен, надо было четче описать желаемое. Постараюсь - хоть и с опозданием - конкретнее сформулировать задачу. Это шаблон для подготовки прошитых документов. Т.е. на дополнительном листе имеем наклейку. Она вырезается и клеится сзади. При этом она должна выглядеть достаточно компактно. Ну, скажем, 5 на 2 см или что-то в этом роде - в зависимости от текста. Т.е. если создали документ из 1832 страниц, то цифра прописью должна все равно оставаться компактной - пусть строки переносит.

Итак, при открытии документа на основе шаблона имеем сразу две страницы.
Первая - чистый лист. Вторая - техническая вспомогательная с этой надписью для наклейки. Я работаю, создал, пусть, 33-х страничный документ. На 34-й у меня наклейка. Контрал А, Ф9. Обновил все. Наклейку вырезал и наклеил сзади на 33 страницу.

4

Re: Как сделать на дополнительной странице изменяющийся текст?

Пока я обхожусь без программирования (см. вложенный файл).
Т.е. вставляем в конце документа закладочку в виде пробела.
Потом поле PageRef. Не программист, что поделать.


Можно ли рац. предложение:
1 лист нельзя сшить. Но 21 можно. Лучше заменить на лист(а/ов).
Или дробить - все, что касается на 1 - лист; на 2-4 - листа; на иные цифры - листов.

Отредактировано Michael (27.12.2009 19:21:21)

Post's attachments

BoundNumbered.dotx 14.64 Кб, 3 скачиваний с 2009-12-27 

You don't have the permssions to download the attachments of this post.

5

Re: Как сделать на дополнительной странице изменяющийся текст?

Михаил, ну тогда если вам не нужен макрос, добавьте новое поле после цифры к вашему блоку:

 ({pageref Конец \*CardText}) 

6

Re: Как сделать на дополнительной странице изменяющийся текст?

Да, это то, что нужно.
Единственное - не могу разобраться с языками.

Вот тут вот http://www.interface.ru/home.asp?artId=3712
есть такой комментарий:
+++
Обратите внимание на следующий момент: если вы используете локализованную (русскую) версию редактора Word, то цифры будут представлены прописью по-русски. Если редактор англоязычный, то и вывод чисел прописью будет на этом языке. Возможна ситуация, когда в локализованной версии Word цифры выводятся по-английски. Значит, раскладка клавиатуры в редакторе в данный момент не русская, а английская.
+++
Но я что-то не могу с этим разобраться. Что-то запутался.
Беру новый документ, ставлю русскую раскладку. Все получается - пишет цифру по-русски.
Опять беру  новый документ, ставлю английскую раскладку. Все получается - пишет цифру по-английски.

Беру свой шаблон на двух языках. Соответственно, две ссылки. Два раза \*CardText. И результат выдается. Но! Один раз. Если обновить ссылки Ctrl+A +F9, то все начинает писаться по-английски.

Нельзя ли как-нибудь железобетонно закрепить языки?

Пример - в приложенном файле.

Post's attachments

BoundNumbered.dotx 14.94 Кб, 2 скачиваний с 2009-12-29 

You don't have the permssions to download the attachments of this post.

7

Re: Как сделать на дополнительной странице изменяющийся текст?

Да, Михаил, это моя старая заметка.
Можно попробовать в шаблоне выделить каждое поле и установить для них соответствующий язык (в строке состояния выберите язык и в открывшемся окне установите язык и снимите флажок с опции автоматического определеления языка).
В шаблоне после обновления это работает. Но при создании нового документа на этом шаблоне все слетает.
Думаю, что может помочь макрос, который бы в конечном документе (перед печатью) выделял эти поля, устанавливал для них язык и обновлял. Другого способа я не вижу.

8

Re: Как сделать на дополнительной странице изменяющийся текст?

Макрос что-то типа такого (при условии, что в вашем документе поле 2 это для русской прописи, а поле 4 - для английской):

Sub langField()
  ActiveDocument.Fields(2).Select
  Selection.LanguageID = wdRussian
  Application.CheckLanguage = False
  Selection.Fields.Update
  ActiveDocument.Fields(4).Select
  Selection.LanguageID = wdEnglishUS
  Application.CheckLanguage = False
  Selection.Fields.Update
  Selection.Collapse wdCollapseEnd
End Sub