Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Посетитель от 04 августа 2023, 10:04

Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 10:04
Добрый день! Никогда с word плотно не работал, и вчера узнал про макросы.
К сожалению прямо сейчас нет времени в них погружаться, но после - обязательно изучу плотно.

Подскажите пожалуйста. У меня допустим 500 документов на печать, в каждом из которых в 3 местах на разных страницах указан номер формата 12345-001 ( 001 - на один документ ) , 12345-002 и так до 12345-500.
Можно ли как при помощи макросов задать чтобы допустим после 12345-... номер автозаполнялся сам, и печать при этом была автоматической. Т.е. вопроса 2:

1. Как запрограммировать чтобы номера заполнялись сами. Допустим 40 файлов на печать за подход, и перед каждой печатью он будет присваивать следующий номер - 12345-001, потом 002, потом 003 и так до 12345-044.
2. Можно ли запрограммировать так, чтобы через word образовалась серия на печать, и при каждой новой печати шел следующий по счету номер.


Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 10:33
Как вы печатаете такое количество файлов? С помощью какой-то программы?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 10:41
Можно попробовать такой вариант. Сделать кнопку на ленте в Ворде. Пользователь щёлкает кнопку, появляется диалог для выбора папки или файлов (что удобнее пользователю), пользователь выбирает папку или файлы, макрос отправляет каждый файл на печать.
Печатать макрос будет так: макрос открывает файл, вносит изменения в заданные места документа, отправляет документ на печать, закрывает документ без сохранения.

Подходит такой вариант?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 11:08
Печатать я, очевидно, буду через принт кондактор, либо через adobe pdf reader pro.
Впервые просто столкнулся с таким объемом и понимаю что сидеть в ручную печатать серийник в 500 документах даже еще и в трех местах это просто ад. и безумие
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 11:10
Мой вариант из ответа #2 не походит?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 11:13
Я правильно понял?
1. я создаю кнопку в панели инструментов ( которая запускает макрос )
2. этот макрос будет проставлять серийный номер
3. при нажатии на копку - мне будет предлагаться выбрать что? 1 документ? и каждое новое нажатие и выбор там будет уже другой серийный номер? ( если один типовой документ )

( если вы про какое-то вложение или код в сообщении, то он видимо не приклеился, его там нет )
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 11:16
Кнопку вы можете сами создать на Панели быстрого доступа или на Ленте - где вам удобнее.
Да, предложенный в ответе #2 способ будет проставлять серийные номера.
Остальное написано в ответе #2 - там написано, что пользователь выбирает.

Макрос я ещё не делал, вложения я не вкладывал, я только уточняю детали.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 11:19
так а как создать такой макрос? какой будет код? какая логика?

я нагуглил два варианта, вы тоже их наверное видели они сразу в поиске - через {DOCVIRABLE dog} и через закладки. но т.к. я не умею пользоваться макросами, у меня что-то получилось, но оно во-первых проставляет не в формате 12345-001, а просто 12345-1, а во-вторых оно то работает то неработает. и шрифт у номера получается другой , можно ведь его тоже задать как в документе?
в-третьих я не понимаю - я вроде вставил эту переменную в 3 местах, а работает в двух.

мне бы еще если не сложно - смогли бы кратко как вообще установить и сохранить макрос? сохранять его как для всех документов или только для конкретного?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 11:31
Сначала я выясняю детали, а макрос будут делать потом.
То, что я предложил в ответе #2, вам подходит? Или вы планируете делать по-другому?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 11:34
да наверное такая логика подходит, чтобы серийный номер выдавался последовательно при печати каждого следующего экземпляра
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 11:38
А метки в документах вы уже поставили? Это вам надо будет вручную открыть каждый файл и вставить метку.
Метки бывают разные, сейчас я просто хочу узнать, есть у вас возможность открыть каждый файл и внести в него изменение вручную.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 11:56
1. Так, значит я беру и в местах где есть этот номер и создаю там закладку. Назову ее num.
Соответственно, я создаю num1 num2 num3 , или просто num и при создании новой закладки я просто выбираю ее из списка предложенных?

2. Закладки я создаю выделением только части "001" как переменной , верно?

Надо ли мне сначала сохранить документ как шаблон с поддержкой макросов?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 12:09
Не обязательно делать закладку.
Можно просто текст напечатать и окружить его редкоиспользуемыми символами, например: ~метка~.
И макрос будет искать текст: ~метка~ и вместо него будет подставлять нужный текст.
Метки можно закрасить для удобства пользователя, чтобы быстро их находить. Макрос будет убирать закраску.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 12:10
Цитата:
Надо ли мне сначала сохранить документ как шаблон с поддержкой макросов?

Макрос можно поместить в Normal. Если у вас всего один макрос, то достаточно использовать Normal.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 12:43
Ок.
Значит в требуемых местах напечатал 12345-~049~ и выделил цветом сделав голубой фон ~049~.
что дальше?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 13:36
Дальше нужно сделать, чтобы после запуска макроса появлялся диалог для выбора папки или файлов.
Пользователь выбирает папку или файлы, макрос открывает каждый файл, делает замену (вместе ~метка~ пишите нужный текст), отправляет его на печать и закрывает файл без сохранения.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 14:18
Т.е. создаю макрос.
Вид - > макросы - > Макросы меню, задаю ему имя - > открывается консоль разработчика. Что мне туда писать?


У меня кстати была проблема - задаешь имя макроса , оно в формате
Sub Имя_макроса ()
End Sub

но когда вставлял код, как бы имя макроса это же название его функции \ команда, да? например есть команда

Sub AutoOpen()
End Sub

и получалось в итоге с моим название: 

Sub Имя_макроса ()
Sub AutoOpen()
End Sub
End Sub

так же ведь не должно быть?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 15:11
Цитата:
Sub Имя_макроса ()
Sub AutoOpen()
End Sub
End Sub

так же ведь не должно быть?

Да, так не должно быть. Внутри процедуры не может быть другой процедуры.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 15:13
Цитата:
Вид - > макросы - > Макросы меню, задаю ему имя - > открывается консоль разработчика. Что мне туда писать?

Макрос начинается с того, что пишите такой код:
Sub Макрос()
   
End Sub

И затем внутрь пишите код:
Sub Макрос()
    Сюда пишите код.
End Sub
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 16:54
да, я так и подумал.
и какой код будет?
нашел вот такой c использованием закладок:

Sub AutoOpen()
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

его можно адаптировать под то что нужно мне? например сделать чтобы номер писался не 1, а 001
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 17:02
AutoOpen вам не нужен. Пользователь щёлкает кнопку, выбирает папку или файлы.
Нужно с этого начать.
Почему вы решили использовать AutoOpen?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 04 августа 2023, 17:04
потому что единственное что я нашел в гугле
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 04 августа 2023, 17:08
AutoOpen используется, чтобы автоматически запускать макрос (без участия пользователя) после открытия файла. Для вашей задачи нет такой необходимости, т.к. пользователь будет щёлкать кнопку.
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Посетитель от 05 августа 2023, 00:33
ок. что мне тогда использовать? какую функцию?
Название: автоматическое увеличение серийного номера в документе при множестве экземпляров
Отправлено: Администратор от 05 августа 2023, 07:17
Вам нужно найти в Гугле:
как отобразить диалог для выбора папки или файлов (что вам удобнее);
как пройтись по всем файлам в выбранной папке или по всем выбранным файлам;
как открыть документ, как закрыть документ.

И потом останется сделать замену меток.