[CDR X5-X8] Kvart - макрос-генератор сетки для квартальника на основе шаблона.

Как вы считаете, в каком порядке должны быть месяцы в итоговом файле

  • 12 месяцев текущего года, декабрь предыдущего, январь следующего

    Голосов: 0 0.0%
  • декабрь предыдущего, 12 месяцев текущего, январь следующего

    Голосов: 8 100.0%

  • Всего проголосовало
    8
  • Опрос закрыт .

Элвин

Участник
Топикстартер
Сообщения
40
Реакции
31
Kvart - макрос, который генерирует сетки для квартального календаря на основе шаблона.

Макрос берёт шаблон, состоящий из одной странички и копирует его в новый документ такого же размера, но состоящий из 14 страниц: 12 месяцев одного года, декабрь предыдущего и январь следующего. Весь дизайн копируется как есть, изменяются только специально помеченные элементы, по которым макрос строит сетку. Сетка может быть как стандартной пятистрочной (с дробью для не помещающихся дней месяца), так и шестистрочной. Редактированием шаблона можно построить вообще произвольную сетку. Могут быть убраны ненужные элементы (дни предыдущего/следующего месяца, номера недель). Выделяются основные праздничные дни РФ.

Давно хотел что-то такое, в итоге пришлось писать самому. Это мой второй "большой" макрос, я не программист, я допечатник, так что код может быть с марашками и несовмещением.

Пока что в статусе беты - пробуйте.

Шаблоны, инструкция и сам макрос на гитхабе
 
Последнее редактирование:

lev

Модератор
20 лет на форуме
Сообщения
2 146
Реакции
2 071
Первой календарной неделей года считают первую неделю, содержащую первый четверг текущего года. Первая неделя 2000 года начинается в понедельник 3 января 2000 года
 
  • Спасибо
Реакции: Элвин, Jeine и dastin

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Время формирования квартальника
- на Х5 - 3,5 минуты - старый дохлый ноут
- на 2018 - 2,5 мин - ничего себе так комп
томительно ...
хоть и понятно, что скорости тут особой не требуется и надо это раз в год :),
но, всё же ... на случай весёлой игры со шрифтами и заливками

... а это синим ... а эту зелёным ... числа больше ... нет-нет, ещё больше ... НЕЕЕЕЕЕТ ... это много ...нет, синий не пойдёт ... и зелёный тоже ... ладно, ты подумай ... я завтра гляну...

вот этот кусок кода
Код:
 'копируем всё в буфер
srcDoc.ActivePage.Shapes.All.Copy

'создание нового документа
Set newDoc = CreateDocument()
newDoc.Unit = srcDoc.Unit
newDoc.MasterPage.SetSize srcDoc.MasterPage.SizeWidth, srcDoc.MasterPage.SizeHeight
newDoc.AddPages 13

For i = 1 To newDoc.Pages.Count
newDoc.Pages(i).Activate
newDoc.Pages(i).ActiveLayer.Paste
doPage i
Next

newDoc.Pages(1).Activate

End Sub

заменить на
Код:
 'копируем всё в буфер
srcDoc.ActivePage.Shapes.All.Copy

Optimization = True
EventsEnabled = False
ActiveDocument.SaveSettings
ActiveDocument.BeginCommandGroup "Elvin_Quart_"

'создание нового документа
Set newDoc = CreateDocument()
newDoc.Unit = srcDoc.Unit
newDoc.MasterPage.SetSize srcDoc.MasterPage.SizeWidth, srcDoc.MasterPage.SizeHeight
newDoc.AddPages 13

For i = 1 To newDoc.Pages.Count
newDoc.Pages(i).Activate
newDoc.Pages(i).ActiveLayer.Paste
doPage i
Next

ActiveDocument.EndCommandGroup
ActiveDocument.RestoreSettings
EventsEnabled = True
Optimization = False
Refresh

newDoc.Pages(1).Activate

End Sub

после этого время формирования квартальника - равняется 7 секундам - на старом дохлом ноуте и Х5
 
  • Спасибо
Реакции: Элвин и Jeine

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
а на "ничего себе машине" и 2018 - таки только минус 21 секунду - 2 мин 09 сек ...
новые версии "очень хорошо" работают с большим количеством текста - ничего не поделаешь
 

Элвин

Участник
Топикстартер
Сообщения
40
Реакции
31
Первой календарной неделей года считают первую неделю, содержащую первый четверг текущего года. Первая неделя 2000 года начинается в понедельник 3 января 2000 года

Правда ваша. Сколько делал этих сеток - не знал такого, а оно вон как. Внёс правки в код.

после этого время формирования квартальника - равняется 7 секундам - на старом дохлом ноуте и Х5

Спасибо, не знал про такое. Небо и земля по скорости.

А CommandGroup на скорость влияет? Потому что по прямому назначению оно там вроде бы и не нужно. Ну, добавил для красоты. Про SaveSettings я может чего недопонимаю, но как будто бы в данном случае не нужно, потому что ничего из того, что оно сохраняет, макрос не меняет.

Макрос перезалил.
 
  • Спасибо
Реакции: Jeine и dastin

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Ну, добавил для красоты.
именно так :) для красоты . на самом деле - скопировал готовый стандартный блок из другого макроса - коммандгрупп и сохранение настроек можно пропустить
 
  • Спасибо
Реакции: Элвин

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Макрос перезалил.

воооотттт ...
не хочу дробных концов ... хочу шесть строк ... 00/00 удалил, размер страницы изменил и весь макет сдвинул
upload_2018-7-3_16-33-5.png


результат таков
upload_2018-7-3_16-36-34.png


ну, ладно ... с размером страницы просто - правим строку

newDoc.MasterPage.SetSize srcDoc.MasterPage.SizeWidth, srcDoc.MasterPage.SizeHeight
на
newDoc.MasterPage.SetSize srcDoc.ActivePage.SizeWidth, srcDoc.ActivePage.SizeHeight

а с номерами недель непорядок
?
 
  • Спасибо
Реакции: Jeine

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
и ещё немного скриншотов на вышеприведённом примере
состоящий из 14 страниц: 12 месяцев одного года, декабрь предыдущего и январь следующего
а вот . нет ...
стартуем с января ... с неделями - ага - но просто так - а в может быть так

upload_2018-7-3_17-3-55.png


а может быть и так - т.е. когда шестая строка содержит "толстое" число - с нумерацией сбоя не происходит

upload_2018-7-3_17-4-43.png



идём дальше - старт с января - на 12 странице, конечно же, декабрь

upload_2018-7-3_17-7-35.png


- но и на 13 снова он - только он вздрогнул и стал моложе на год ... про номера недель молчу-молчу

upload_2018-7-3_17-8-39.png


ну а январь - как положено - таки 2019
 

Вложения

  • upload_2018-7-3_17-4-33.png
    upload_2018-7-3_17-4-33.png
    42.5 КБ · Просм.: 443
  • Спасибо
Реакции: Jeine

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
ага ... с двойным декабрём туплю ... видимо предполагалось что, его надо руками на место положить - в начало
хорошо - отстал - хотя можно сделать и на автомате
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
в Sub start в конце, перед строкой
newDoc.Pages(1).Activate
добавить
newDoc.Pages(13).MoveTo 1
декабрь предыдущего года встанет на место
 
  • Спасибо
Реакции: Jeine

Элвин

Участник
Топикстартер
Сообщения
40
Реакции
31
результат таков

Ну да, скорее всего это потому что у вас стоит "apply the page size to the current page only". Мне лично кажется эта фича корела (разные размеры страниц) немного запутывающей, и я ей не пользуюсь. Но вы конечно правы, сыграл субъективизм, стоит брать ActivePage. Поправил.

На 13-й странице - декабрь предыдущего, на 14-й - январь следующего. Можно было конечно сделать декабрь предыдущего на 1-й, но мне кажется изящным, когда 12 месяцев соответствуют 12 страницам, а дальше идут дополнительные.

С номерами недель спасибо, поправил.
 
  • Спасибо
Реакции: Jeine

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Можно было конечно сделать декабрь предыдущего на 1-й
нужно ... вы же не хотите, чтобы потом, послепечатка, матерясь поминая вас всуе, перекладывала этот декабрь на место, выковыривая по одному из пачки порезанного тиража

тем более - там всего одна строка - см. выше
 
Последнее редактирование:

Элвин

Участник
Топикстартер
Сообщения
40
Реакции
31
нужно ... вы же не хотите, чтобы потом, послепечатка, матерясь поминая вас всуе, перекладывала этот декабрь на место, выковыривая по одному из пачки порезанного тиража

Этого никак не может произойти, поскольку при раскладке спусков допечатник положит все месяцы туда, куда нужно :)

Если серьёзно, то я не знаю, может константу ввести, чтобы каждый под себя настроил. Или голосование замутить?
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
поскольку допечатник положит все месяцы туда, куда нужно
а если он просто положит? :)
сколько их напечатано - и всегда делали стопочкой - январь внизу - декабрь наверху - порезали и вперде - на брошюратор - не забывайте и про оперативку
 

Элвин

Участник
Топикстартер
Сообщения
40
Реакции
31
а если он просто положит? :)
сколько их напечатано - и всегда делали стопочкой - январь внизу - декабрь наверху - порезали и вперде - на брошюратор - не забывайте и про оперативку

Ну послушайте, зачем подменять понятия. Макрос задумывался как несущий определённую функцию. Он делает только сетку, а не спуск. Спуск - это другая задача. Вы ставите вопрос так, как будто расположение листов имеет категорическое значение. А я не вижу, в чём тут вообще проблема. Мне удобно так. Если большинству людей удобно по-другому - я переделаю.
 
  • Спасибо
Реакции: izrukvruki

dosp

Участник
Сообщения
1 151
Реакции
373
Если будем голосовать - я за переделку!
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
а что спуск? Подход будет разный - я же вам не зря про оперативку намекаю ...
в офсете - ясен пень в любую погоду - на лист выложат все месяцы, ибо одна форма, один вывод, одна приладка и пр., порежут и буду раскладывать
в оперативке - на 1-ом листе будет сколько войдет одного месяца, на 2-ом - второго ... после порезки будет стопка комплектов и ничего перекладывать не надо
всяк послепачатник вам за это спасибо скажет и будет случай, ответит добрым словои и делом
 

Jeine

Да здравствует разум! Да сгинет маразм!
15 лет на форуме
Сообщения
7 310
Реакции
6 315
Офсет офсету рознь. У нас собирали на 12 А3 монтажей, чтобы подбирать прямо А3 листами.
Если "экономить", то можно сэкономить несколько форм, зато на подборке времени тратится раза в 3 больше. А потом ещё и неверно подобранные блоки обнаруживаются. Нафик такую экономию.