Просматривают:
1 Анонимно
кто-бы смог доработать до ума макрос? |
||
|
||
---|---|---|
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23 Сообщений: 67
|
Дела такое. Массив баркодов создается в отдельнйо проге, и после некоторой доработки. Мы имеем в кореле в слое "Рабочий стол" несколько сот совершенно одинаковых Шейпов, который приходися в ручную выравнивать по страницами.
Для нескольких тысяч дисконток такая операция вручную слишком нудная. Корел может сделать скрипт, но этот скрипт обрабатывает конкретные страницы в конкретном файле... т.е. пока его закончишь - работа уже выполнена и скрипт можно выбрасывать Вот примерно как он выглядит: Sub Macro1() ' ' Recorded 02.12.2008 ' ' Description: ' ' ActivePage.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Dim p1 As Page Set p1 = ActiveDocument.InsertPagesEx(1, False, ActivePage.Index, 3.346457, 2.125984) p1.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Dim p2 As Page Set p2 = ActiveDocument.InsertPagesEx(1, False, p1.Index, 3.346457, 2.125984) p2.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Dim p3 As Page Set p3 = ActiveDocument.InsertPagesEx(1, False, p2.Index, 3.346457, 2.125984) p3.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Dim p4 As Page Set p4 = ActiveDocument.InsertPagesEx(1, False, p3.Index, 3.346457, 2.125984) End Sub Кто бы мог доработать этот скрипт, чтобы он автоматически создавал страницы. Т.е. не надо было ему тупо прописывать Dim p5 As Page, а скрипт сам создавал страницу p как p(последняя)+1 и вставлял в эту созданную страницы следующйи объект?
Опубликовано: 2008/12/2 13:18
Edited by ManYacK on 03/12/2008 7:34:23
|
|
|
Re: кто-бы смог доработать до ума макрос? |
|
---|---|---|
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23 Сообщений: 67
|
ага! есть код который делает то, что мне нужно огромный респект Nikesh за это... вот что получается.
Sub Macro2() ' ' Recorded 02.12.2008 ' ' Description: ' ' ActiveDocument.Pages(1).Activate ActivePage.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Dim CurPage As Page For Each element In ActiveDocument.Pages(1).Layers(1).Shapes Set CurPage = ActiveDocument.InsertPagesEx(1, False, ActivePage.Index, 3.346457, 2.125984) ActiveDocument.Pages(1).Activate element.Copy CurPage.Activate CurPage.ActiveLayer.Paste CurPage.Shapes.All.AlignToShape cdrAlignRight, ActiveDocument.MasterPage.DesktopLayer.Shapes(1), cdrTextAlignBoundingBox Next End Sub Собственно для работы этого достаточно, с той поправкой, что надо делать некоторую подготовительную работу для его юзания... Если у кого-то есть есть желание и умение оформить данный скрипт в виде полноценного плагина к Корелу (с функцией позволяющей задавать произвольные координаты объекта), было бы полезно в дизайнерском деле.
Опубликовано: 2008/12/3 7:32
|
|
|
Re: кто-бы смог доработать до ума макрос? |
|
---|---|---|
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23 Сообщений: 67
|
Вот, блин... всегда так. Два дня думаешь как сделать полегче. Потом не доделов до конца откладываешь до посленовогодних праздников... и в итоге забываешь как работает эта фигня.
В общем памятка для себя (полдня вспоминал) _____________ 1. создаем документ. 2. В первую страницу на пустое поле импортируем стопку баркодов в нужном порядке. Выравниваем их по горизонтали. 3. в Страницу "Рабочий стол" ставим прямоугольник, который будет вертикальным ориентром. Запускаем скрипт. _____________ Вопрос остается открытым. Кто сможет оформить скрипт в удобоваримом виде (*.csc)? или хотя-бы посдскажите, как сделать, чтобы скрипт создавал страницу размером указанным в глобальных настройках, а не фиксированного размера дисконтки 86*54
Опубликовано: 2009/2/3 10:06
|
|
|
Re: кто-бы смог доработать до ума макрос? |
|
---|---|---|
Пользователь 1 уровня
Присоединился:
2006/9/4 0:38 Откуда Минск
Сообщений: 262
|
ManYacK
Чета твой макрос вообще не работает :( Set p1 = ActiveDocument.InsertPagesEx(1, False, ActivePage.Index, 2.362205, 1.181102) вот такая строчка создает страничку 60х30 мм. Итак если правильно понял тебя: вбей руками нужный размер странички настройки save settings as default. запиши новый макрос и перепиши из него в основной последние значения тогда страничка будет не как визитка созаваться
Опубликовано: 2009/2/3 13:27
|
|
|
Re: кто-бы смог доработать до ума макрос? |
|
---|---|---|
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23 Сообщений: 67
|
у меня вот так работает:
Тут исходная компановка. Задан размер страниц (он-же в скрипте задается) И направляющий прямоугольник выложин на отдельный слой. А вот тут результат. Кроме того, скрипт в первой странице оставляет все исходные баркоды стопкой, и их копии по сраницам разбрасывает. Просто надо удалить первую станицу - если она не нужна.
Опубликовано: 2009/2/4 8:14
|
|
|
Re: кто-бы смог доработать до ума макрос? |
|
---|---|---|
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23 Сообщений: 67
|
Господа, оказывается мой макрос работает только в 13-м кореле...
А теперь я решил переехать в X6. И надежный макрос, который верой и правдой служил мне долгие годы не пашет. Помогите пожалуйста, как заставить действовать в 16-к кореле? Очень полезная штучка, можно сказать жизненно необходимый... количество дисконток пронумерованных им уже давно за несколько сот тысяч перевалило... трудно представить что-бы мне пришлось пережить - делай я все вручную поштучно. А если ему сделать активацию по кнопочке - так это будет ваще просто замечательно
Опубликовано: 2012/7/19 13:16
|
|