Отправка команд через 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.