Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





кто-бы смог доработать до ума макрос?
print | #
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23
Сообщений: 67
Offline
Дела такое. Массив баркодов создается в отдельнйо проге, и после некоторой доработки. Мы имеем в кореле в слое "Рабочий стол" несколько сот совершенно одинаковых Шейпов, который приходися в ручную выравнивать по страницами.

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

Вот примерно как он выглядит:
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
Offline
ага! есть код который делает то, что мне нужно огромный респект 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
Offline
Вот, блин... всегда так. Два дня думаешь как сделать полегче. Потом не доделов до конца откладываешь до посленовогодних праздников... и в итоге забываешь как работает эта фигня.
В общем памятка для себя (полдня вспоминал)
_____________
1. создаем документ.
2. В первую страницу на пустое поле импортируем стопку баркодов в нужном порядке. Выравниваем их по горизонтали.
3. в Страницу "Рабочий стол" ставим прямоугольник, который будет вертикальным ориентром.

Запускаем скрипт.
_____________

Вопрос остается открытым. Кто сможет оформить скрипт в удобоваримом виде (*.csc)?

или хотя-бы посдскажите, как сделать, чтобы скрипт создавал страницу размером указанным в глобальных настройках, а не фиксированного размера дисконтки 86*54

Опубликовано: 2009/2/3 10:06


Re: кто-бы смог доработать до ума макрос?
Пользователь 1 уровня
Присоединился:
2006/9/4 0:38
Откуда Минск
Сообщений: 262
Offline
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
Offline
у меня вот так работает:
Тут исходная компановка. Задан размер страниц (он-же в скрипте задается)
И направляющий прямоугольник выложин на отдельный слой.


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

Просто надо удалить первую станицу - если она не нужна.

Опубликовано: 2009/2/4 8:14


Re: кто-бы смог доработать до ума макрос?
Пользователь 2 уровня
Присоединился:
2006/2/26 12:23
Сообщений: 67
Offline
Господа, оказывается мой макрос работает только в 13-м кореле...

А теперь я решил переехать в X6.
И надежный макрос, который верой и правдой служил мне долгие годы не пашет.

Помогите пожалуйста, как заставить действовать в 16-к кореле?
Очень полезная штучка, можно сказать жизненно необходимый... количество дисконток пронумерованных им уже давно за несколько сот тысяч перевалило... трудно представить что-бы мне пришлось пережить - делай я все вручную поштучно.

А если ему сделать активацию по кнопочке - так это будет ваще просто замечательно

Опубликовано: 2012/7/19 13:16







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]