Статьи из блога

Как автоматически увеличивать номер договора при каждом открытии документа

Иван задал вопрос:

Существует договор в формате word 2003. У него есть номер. Как можно сделать, чтобы при новом открытии данного документа у него увеличивался номер на один?

Я могу предложить два варианта (спасибо за помощь Александру Витеру). Оба варианта связаны с созданием макроса AutoOpen (действия, выполняемые при открытии документа).

 

1. Вот макрос, который использует закладки.

Вам нужно выделить номер договора и создать закладку для него с именем num.

Sub AutoOpen()
'увеличиваем номер договора при каждом открытии документа
'в документе существующий номер должен быть закладкой с именем num
Dim bm As Bookmark
Dim i As Long
Set bm = ActiveDocument.Bookmarks("num")
i = Val(bm.Range.Text)
bm.Range.Select
With Selection
   .Text = i + 1
   .Bookmarks.Add Name:="num"
   .Collapse wdCollapseEnd
End With
Set bm = Nothing
End Sub

 

2. Макрос с использованием переменной DOCVARIABLE.

Выделите номер договора и вставьте сочетанием клавиш «CTRL+F9» поле (появятся фигурные скобки и мигающий курсор между ними). Между скобками вставьте выражение DOCVARIABLE dog, чтобы получилось примерно так: {DOCVARIABLE dog}.

Затем разместите этот макрос в модуле документа или шаблона Normal.dot. Сохраните документ и закройте. При следующем открытии документа номер договора будет увеличен на единицу.

 

Sub AutoOpen()
  On Error Resume Next
  ActiveDocument.Variables("dog").Value = ActiveDocument.Variables("dog").Value + 1
  If Err.Number = 5825 Then ActiveDocument.Variables.Add "dog", 1: Err.Clear
  ActiveDocument.Fields.Update
End Sub

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 13

  1. Алексей
    30.09.2009 в 10:59 | #1

    Здравствуйте Антон.

    Не очень понятно, как с сайта задать вам вопрос, так что попробую из этой формы.

    Вопрос у меня непростой. В Ворде есть возможность самостоятельно создавать стили. Я пытаюсь создать стиль на основе встроенного стиля Заголовок 1, но он не отображается в перекрестных ссылках как заголовок. Более того, при вставке рисунка, когда я устанавливаю нумерацию с учетом главы, рисунок не нумеруется как 1.1, т. е. номер главы, и через точку, порядковый номер рисунка. Уровень заголовка у меня стоит первый. Вообще, в ходе экспериментов я заметил, что нормальная работа со стилями воспринимается Вордом только с использлванием «вшитых» в саму программу стилей Заголовок 1—9. Там и панель структуры для них работает. Добавить свои стили, чтобы они работали как встроенные, мне не удалось. Созданием стилей для Ворда занимаюсь уже давно, но приходится «мириться» с недостатками пользовательских стилей. Думал создать стили на основе встроенных, но тут тоже самое — любое отступление от стандартного стиля лишает его возможности использовать в полной мере. Остается только один очевидный путь — изменять стандартные стили под свои нужды.

    Вопрос: Можно ли в ВОрде настроить пользовательские стили, чтобы программа нормально работала с ними, как с родными.

  2. 30.09.2009 в 11:38 | #2

    Алексей, действительно, редактор ссылается только на встроенные стили. Но не везде. Например, в Оглавлении вы можете указать ваш собственный стиль.

    Но, если вам нужны стили типа Заголовок или перекрестные ссылки, то зачем для этих целей создавать свои стили? Достаточно изменить существующие на свой лад и все отлично. Почему вас не устраивает этот "очевидный" путь?

  3. Алексей
    30.09.2009 в 11:57 | #3

    Антон, дело в том, что мне нужно несколько стилей для заголовков одного уровня, к примеру первого. Очевидный путь создаст только один единственный стиль первого уровня, т. к. даже если я создам на его основе «дубликат», он в перекрестных ссылках работать не будет.

    Самый простой пример использования двух стилей первого уровня это два стиля: один для русского языка, один для английского абзаца. А они по стилям разные.

    Вообще, вопрос не к вам, Антон, но мне никак не понятно, зачем давать обрезанную функциональность пользовательским стилям? grin

    Может это вообще «баг» Ворда? Или «фича»?

  4. 30.09.2009 в 15:07 | #4

    Я согласен с Алексеем. Мне самому непонятно, почему привязка идет к имени стиля, а не к уровню заголовка? Какая разница? С точки зрения пользователя это очень неудобно.

  5. Алексей
    02.10.2009 в 15:58 | #5

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

    Дело в том, что я сам не применяю стили, я их только создаю и тестирую для инженеров (в компании это примерно 50—60 человек), так что буду дальше «грызть» Ворд.

    Сформирую «костяк» из самых необходимых стилей и сделаю их встроенными.

    Также хочу сказать огромное спасибо всем кто помогает другим, делясь своими наработками и опытом по Ворду. Я вот, к примеру, делаю тоже самое по Visio.

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

    Тут я тоже придумал полумеру, всё вставляю в «подготовленный» документ из нового и уже правлю только в нем.

    P.P.S. Антон, так как же вам отравлять вопросы с сайта? Подскажите ссылку. grin

  6. 02.10.2009 в 16:09 | #6

    Вот есть форум, где вы можете задавать вопросы.

  7. Сергей Наумов
    24.11.2009 в 08:06 | #7

    Здравствуйте Антон,

    Не знаю, как здесь можно задать вопрос, поэтому задаю в комментариях. Заранее прошу за это прощения.

    Вопрос такой.

    При использовании кода REF и вставке текстовых полей, почему то перед вставленным текстом появляются лишние буквы, "я" и "е" при этом если их удалить вручную, при нажатии кнопки печать, происходит обновление полей и они появляются вновь.

    Почему это происходит?

    как это устранить?

  8. 24.11.2009 в 12:47 | #8

    Сергей, вы можете прислать ваш шаблон (не документ!), в котором это происходит? Шлите шаблон на этот ящик: wordtips[@]mail.ru

  9. 24.11.2009 в 12:49 | #9

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

  10. 25.11.2009 в 07:44 | #10

    Для Сергея Наумова: ответил вам в письме и сообщу здесь: у вас захвачен лишний текст в закладке (захвачены последние буквы из предложения перед вашим текстом). Переопределите закладку.

  11. Максим
    11.03.2010 в 15:33 | #11

    Здравствуйте! Помогите пожалуйста.

    Есть договор. Как сделать так, чтобы при вводе Ф.И.О. в начале они так же автоматически попадали в конец документа в раздел "реквизиты" Заранее Благодарен

  12. 12.03.2010 в 08:14 | #12

    Как сделать так, чтобы при вводе Ф.И.О. в начале они так же автоматически попадали в конец документа в раздел "реквизиты"

    Почитайте заметки:

    Ввод часто повторяющихся фрагментов текста

    Ввод повторяющихся фрагментов текста в Word 2007

  13. Игорь
    04.12.2013 в 12:28 | #13

    Добрый день!

    А как можно очистить все хвосты слияния... чищу документ, но он всё равно продолжает спрашивать... при этом в ленте кнопка выделять поля слияния не активна.

Оставьте комментарий!

(обязательно)

^ Наверх