Отправка команд через VBA

Я пишу сценарий в VBA, который создает рисунок в CorelDraw. У меня проблемы с центрированием текста. Вот код, который правильно работает в редакторе макросов CorelDraw:

Dim s2 As Object
    Dim Txt As Object
    Dim test As String
    Dim returntest As String
    returntest = "Test~Test1234~Test56~Test789"
    test = Replace(returntest, "~", Chr(13))
    Set s2 = CorelApp.ActiveLayer.CreateArtisticText(-7.75, (1 - 0.5) / 2, test)
    Set Txt = s2.Text
    Txt.Story.Font = "Swis721 BT"
    Txt.Story.Size = 20
    Txt.Story.LineSpacing = 75
    Txt.Story.Alignment = cdrCenterAlignment
    s2.Fill.UniformColor.CMYKAssign 0, 0, 0, 100
    s2.Outline.SetNoOutline
    s2.CenterX = s1.CenterX
    s2.CenterY = s1.CenterY

s1 - это просто прямоугольник, который уже определен. Проблема с "cdrCenterAlignment". VBA не распознает его как действительный аргумент, поскольку он ссылается на то, что существует только в CorelDraw. Я получаю "переменная cdrCenterAlignment не определена" или "несоответствие типов", если я называю это строкой. Как, если возможно, я могу отправить эту команду / аргумент в CorelDraw, еще работая в Excel?

Я столкнулся с похожими проблемами при отправке того же чертежа в AutoCAD, но смог обойти его, отправив информацию в командную строку.

2 ответа

Решение

В своем коде VBA вы можете определить его самостоятельно:

Const cdrCenterAlignment = 3

https://community.coreldraw.com/sdk/api/draw/19/e/cdrAlignment

Ссылка на библиотеку CorelDRAW (Инструменты> Ссылки) и константы будут определены, и вы можете использовать фактические типы CorelDRAW и API и наслаждаться IntelliSense и автозаполнением, вместо того, чтобы работать против Object интерфейс и постоянные ссылки на документацию, чтобы узнать, какие члены доступны на каких объектах, - и иметь дело с ошибкой 438 во время выполнения всякий раз, когда вы делаете опечатку, потому что код с поздней привязкой будет успешно компилироваться и разрешаться только во время выполнения.

Добавление ссылки на библиотеку типов CorelDRAW позволит вам написать код с ранней привязкой, который разрешается во время компиляции, точно так же, как вызовы функций, которые вы выполняете для VBA или же Excel библиотеки типов, на которые есть ссылки по умолчанию в проекте Excel VBA.

Другие вопросы по тегам