[CDR 2017-2021] Найти штрих-код и закривить

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Добрый день, записал макрос, который закривляет штрих-код ITF-14.
В данном случае он работает при выделенном объекте CorelBarcode, а как сделать, чтобы в ходе выполнения скрипта находился объект CorelBarcode (невыделенный) и потом закривлялся. Спасибо.

Код:
Sub aaa()
    Dim OrigSelection As ShapeRange
    Set OrigSelection = ActiveSelectionRange
    OrigSelection.Cut
    ActiveLayer.PasteSpecial "Metafile"
    Dim Paste1 As ShapeRange
    Set Paste1 = ActiveSelectionRange
    Dim grp1 As ShapeRange
    Set grp1 = Paste1.UngroupAllEx
    grp1(1).Delete
    ActiveDocument.CreateShapeRangeFromArray(grp1(45), grp1(42), grp1(57), grp1(51)).Delete
    ActiveDocument.CreateSelection grp1(2), grp1(3), grp1(4), grp1(5), grp1(6), grp1(7), grp1(8), grp1(9), grp1(10), grp1(11), grp1(12)
    ActiveDocument.AddToSelection grp1(13), grp1(14), grp1(15), grp1(16), grp1(17), grp1(18), grp1(19), grp1(20), grp1(21), grp1(22), grp1(23)
    ActiveDocument.AddToSelection grp1(24), grp1(25), grp1(26), grp1(27), grp1(28), grp1(29), grp1(30), grp1(31), grp1(32), grp1(33), grp1(34)
    ActiveDocument.AddToSelection grp1(35), grp1(36), grp1(37), grp1(38), grp1(39), grp1(40), grp1(41), grp1(43), grp1(44), grp1(46), grp1(47)
    ActiveDocument.AddToSelection grp1(48), grp1(49), grp1(50), grp1(52), grp1(53), grp1(54), grp1(55), grp1(56), grp1(58)
    Dim s1 As Shape
    Set s1 = ActiveSelection.Group
    s1.Fill.UniformColor.CMYKAssign 0, 0, 0, 100
End Sub
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 233
Реакции
10 851
ActiveDocument.CreateShapeRangeFromArray(grp1(45), grp1(42), grp1(57), grp1(51)).Delete ActiveDocument.CreateSelection grp1(2), grp1(3), grp1(4), grp1(5), grp1(6), grp1(7), grp1(8), grp1(9), grp1(10), grp1(11), grp1(12) ActiveDocument.AddToSelection grp1(13), grp1(14), grp1(15), grp1(16), grp1(17), grp1(18), grp1(19), grp1(20), grp1(21), grp1(22), grp1(23) ActiveDocument.AddToSelection grp1(24), grp1(25), grp1(26), grp1(27), grp1(28), grp1(29), grp1(30), grp1(31), grp1(32), grp1(33), grp1(34) ActiveDocument.AddToSelection grp1(35), grp1(36), grp1(37), grp1(38), grp1(39), grp1(40), grp1(41), grp1(43), grp1(44), grp1(46), grp1(47) ActiveDocument.AddToSelection grp1(48), grp1(49), grp1(50), grp1(52), grp1(53), grp1(54), grp1(55), grp1(56), grp1(58)
Вот этот кусок расово индийского кода наверняка работать будет исключительно на единственном и неповторимиом экземпляре баркода
 
  • Спасибо
Реакции: DukereD

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Работает на любом ITF-14 из CorelBarcode
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 233
Реакции
10 851
Работает на любом ITF-14 из CorelBarcode
Вам очень сильно повезло, но не делайте так никогда, этот код (как я понимаю, автозаписанный) безумный и глючный и представляет собой бомбу замедленного действия в вашем макросе, причем такую, что может сработать на отпечатанном многомиллионном тираже.
 
  • Спасибо
Реакции: DukereD

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
В скриптописании я ноль, поэтому тупо записал, но работает.
 

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Как найти в документе невыделенный Barcode?
 

lev

Модератор
20 лет на форуме
Сообщения
2 146
Реакции
2 071
Barcode это OLE объект, можно выловить их. Как их отличать от других OLE, лень думать
Код:
ActivePage.FindShapes(, cdrOLEObjectShape).CreateSelection
Почему бы не использовать какую-нибудь из кучи уже написанных до Вас баркодокривилок, а не городить свою?
Экспорт-реимпорт баркода как-то попроще будет.
 

lev

Модератор
20 лет на форуме
Сообщения
2 146
Реакции
2 071
В X7 - OLE
Код:
If lev_Не_протестировал_код Then lev_Не_постит_код _на _форум
 
Последнее редактирование:
  • Спасибо
Реакции: mnemonix

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 233
Реакции
10 851
Тогда это может сработать
 

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Экспорт-реимпорт баркода как-то попроще будет.
Гораздо проще нажать на кнопку или hotkey, и всё мгновенно делается внутри документа. А в день таких документов может проходить не одна сотня.
 

lev

Модератор
20 лет на форуме
Сообщения
2 146
Реакции
2 071
А я Вам предлагал экспорт-реимпорт вручную делать?
 
  • Спасибо
Реакции: mnemonix

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Код:
ActivePage.FindShapes(, cdrOLEObjectShape).CreateSelection

И да, Lev, это работает.'cooll)'
 

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
Для EAN-13 используем скрипты от РИОН (не реклама)
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
corel-macros-barcode-to-curve, да, и lev, собственно, уже сказал, что такого рода макросов куча
 

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
corel-macros-barcode-to-curve, да, и lev, собственно, уже сказал, что такого рода макросов куча
Да, он закривляет, но:
1. Работает только с выделенным объектом (что допустимо)
2. Не удаляет белую подложку-прямоугольник (удалить можно вручную, но это лишние телодвижения)
 

lev

Модератор
20 лет на форуме
Сообщения
2 146
Реакции
2 071
А потом Вам перекраска из ричблэка в блэк понадобится... :)
А потом...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 233
Реакции
10 851
Повторяю - ваш автозаписанный вариант работает на грани фола, так делать нельзя. Чуть изменение и он кусок не перекрасит или вылетит.
 

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
579
Реакции
175
ричблэк/ргб/К100 - не имеет значения в данном случае, т.к. это транспортная упаковка, а удаление белой подложки позволяет выставить точные размеры штрих-кода
 
Последнее редактирование: