V-Форум / Corel VBA / Тема: кто-бы смог доработать до ума макрос?

кто-бы смог доработать до ума макрос?

 02/12/2008 13:18:03 #Link

ManYacK

Дела такое. Массив баркодов создается в отдельнйо проге, и после некоторой доработки. Мы имеем в кореле в слое "Рабочий стол" несколько сот совершенно одинаковых Шейпов, который приходися в ручную выравнивать по страницами.

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

Вот примерно как он выглядит:
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 и вставлял в эту созданную страницы следующйи объект?

Re: кто-бы смог доработать до ума макрос?

 03/12/2008 7:32:01 #Link

ManYacK

ага! есть код который делает то, что мне нужно огромный респект 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


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

Если у кого-то есть есть желание и умение оформить данный скрипт в виде полноценного плагина к Корелу (с функцией позволяющей задавать произвольные координаты объекта), было бы полезно в дизайнерском деле.

Re: кто-бы смог доработать до ума макрос?

 03/02/2009 10:06:53 #Link

ManYacK

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

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

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

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

Re: кто-бы смог доработать до ума макрос?

 03/02/2009 13:27:19 #Link

AsdPiton

ManYacK
Чета твой макрос вообще не работает :(
Set p1 = ActiveDocument.InsertPagesEx(1, False, ActivePage.Index, 2.362205, 1.181102)
вот такая строчка создает страничку 60х30 мм.
Итак если правильно понял тебя:
вбей руками нужный размер странички
настройки save settings as default.
запиши новый макрос и перепиши из него в основной последние значения
тогда страничка будет не как визитка созаваться

Re: кто-бы смог доработать до ума макрос?

 04/02/2009 8:14:09 #Link

ManYacK

у меня вот так работает:
Тут исходная компановка. Задан размер страниц (он-же в скрипте задается)
И направляющий прямоугольник выложин на отдельный слой.


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

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

Re: кто-бы смог доработать до ума макрос?

 19/07/2012 13:16:06 #Link

ManYacK

Господа, оказывается мой макрос работает только в 13-м кореле...

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

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

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

Источник: https://powerclip.ru/modules/newbb/viewtopic.php?topic_id=8267&start=0

Rambler's Top100