Макрос для ХЗ для сборки визиток

  • Автор темы Автор темы Toh_A
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Toh_A

Участник
Топикстартер
Сообщения
47
Реакции
0
Всем доброго дня!

Данный вопрос родился из любопытства и главного двигателя технического прогресса-человеческой лени.

Возможно ли написание скрипта для корела(ХЗ), позволяющего автоматически создавать страницы указанного размера и помещать на них объекты определенным образом?

Поясню на примере.
Приходит файл, в котором на листе А4(или по всему рабочему пространству) раскиданы штук 10 визиток 50*90, ограниченных прямоугольниками данного размера. Реально ли чтоб корел создавал для каждого такого прямоугольника страницу соответствующего формата и помещал этот прямоугольник(вместе со всем что он ограничивает) по центру созданной страницы?
В идеале, конечно, можно что-нибудь придумать для визиток с вылетами и продукции другого формата(например тех же визиток, размером 84*55 и т.д.), но это уже развитие темы.

Подсознательно я догадываюсь, что подобный скрипт существует, но я так и не смог его найти(либо не там искал). Буду премного благодарен всем, кто направит на путь истинный!
 
Ответ: Скрипт для ХЗ для сборки визиток

Это сделать проще пареной репы. Но при условии что визитки и ограничивающие их прямоугольники сгруппированны.
 
Ответ: Скрипт для ХЗ для сборки визиток

Скрипт существует и уже давно.
Выкладываю код для всеобщего заюзывания. Буду рад, если кто-то возьмется его оптимизировать, если есть куда более простое решение.
Скрипт создает новый документ, где каждый из выделенных объектов находится на отдельной странице.
Код:
Sub Selection_To_Multipage_File()
    Dim ss5 As Shape
    Dim opt As New StructSaveAsOptions
    Dim fso, MyFilе, n
    Dim CreatePage As Page
    Dim Doc As Document
    Dim x As Double, y As Double, w As Double, h As Double
    
    ActiveDocument.Unit = cdrMillimeter
            With opt
                .EmbedVBAProject = False
                .Filter = cdrCDR
                .IncludeCMXData = False
                .Range = cdrSelection
                .EmbedICCProfile = False
                .ThumbnailSize = cdr10KColorThumbnail
                .Version = cdrCurrentVersion
            End With
        Set fso = CreateObject("Scripting.FileSystemObject")
        v = ActiveSelection.Shapes.Count
        n = 1
        m = n & ".cdr"
    If ActiveSelection.Shapes.Count = 0 Then
        MsgBox "Дружок, ничего же не выделено! :)", vbInformation, "Что-то не то..."
        End
        End If
    For Each ss5 In ActiveSelection.Shapes
        ss5.CreateSelection
        ActiveDocument.SaveAs "c:\вася_" & n & ".cdr", opt
        n = n + 1
    Next ss5
    

Set Doc = CreateDocument()
Set CreatePage = ActiveDocument.InsertPages(v - 1, False, ActivePage.Index)
    For d = 1 To v
        ActiveDocument.Pages(d).Activate
        ActiveLayer.Import "c:\вася_" & d & ".cdr"
            Set MyFile = fso.GetFile("c:\вася_" & d & ".cdr")
            MyFile.Delete
        ActiveSelection.GetBoundingBox x, y, w, h, True
        ActivePage.SetSize w, h
        ActiveSelection.GetBoundingBox x, y, w, h, True
        ActiveSelection.Move -x, -y
    Next d
End Sub
 
Ответ: Скрипт для ХЗ для сборки визиток

Спасибо banIDit!
Работает, однако!
По осени съэкономит немало времени. А есть у кого-нибудь мысли как его(скрипт) усовершенствовать(я в программировании не силен)? Например, для визиток с вылетами.

Полезная штука(допечатники меня поймут).
Еще раз спасибо!
 
Ответ: Скрипт для ХЗ для сборки визиток

Давайте, всё-таки, называть скриптами, то, что написано на CorelSCRIPT, а то, что написано на VBA - макросами.
 
Ответ: Скрипт для ХЗ для сборки визиток

А у меня пишет: "Макрос содержит ошибку, запуск невозможен"
и вырубается.
А так хочется... :0)))
 
Ответ: Скрипт для ХЗ для сборки визиток

Корел руссифицированный. Версия 12. (вижу что для Х3, но решил попробовать на 12)
вот скин:

ссылочка
 
Ответ: Скрипт для ХЗ для сборки визиток

Да.
Создаю текстовый документ и сохраняю его с расширением *.csc
 
Ответ: Скрипт для ХЗ для сборки визиток

А надо в *.gms
В папку C:\CorelX3\Draw\GMS
Или как у вас там путь....
Создаешь новый файл, в кореле открываешь редактор VBA и вставляешь в созданный проект текст макроса.
 
Ответ: Скрипт для ХЗ для сборки визиток

Всё получилось.
Огромное спасибо.
 
Ответ: Макрос для ХЗ для сборки визиток

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

Вложения

  • vizitki.gif
    vizitki.gif
    1.5 КБ · Просм.: 899
Ответ: Макрос для ХЗ для сборки визиток

Да ну, в акробате это полный изврат! Исходные визитки в кореле - значит из каждой визитки надо отдельный PDF делать и лепить их в Quite? Уж проще руками в кореле собрать получается.
 
Ответ: Макрос для ХЗ для сборки визиток

Да нет, же, повторяю, речь идет о компановке разных визиток на листе. Короче говоря, до предела упрощая задачу, требуется макрос, выполняющий примерно такое хитрое выравнивание объектов, как на рисунке:
 

Вложения

  • vizi.gif
    vizi.gif
    4 КБ · Просм.: 1 240
Ответ: Макрос для ХЗ для сборки визиток

_MBK_, ой... а как вы такое будете резать? особенно нижний ряд
 
Ответ: Макрос для ХЗ для сборки визиток

По полам, потом шинковать каждый столбец...

Вообще это принципиально неверный расстанов, но по другой причине...
Для цифры, вероятно неактуальный (всё одно бросает +- пол метра...)
Но для офсета, где есть понятие "верного угла" резчики у меня требуют обеспечить первый рез (левый относительно верного угла) и, желательно, второй, (верхний относительно верного угла).
 
Ответ: Макрос для ХЗ для сборки визиток

А вообще мда...
Я бы не отказался от макроса оптимизации расстанова разноформатных этикеток... Хоть и в Кореле, да можно и отдельной программой, т.к. менеджеры пишут, заразы, Таких столько на лист, таких столько, а таких вот столько...
Как они предполагали это расставлять одному Богу известно...
Вот и приходится муторно думать до посинения.
 
Статус
Закрыто для дальнейших ответов.