通过 VBA 发送命令

Sending commands across 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 variable not defined" 或 "type mismatch"。 如果可能的话,我如何才能在 Excel 中工作的同时将此 command/argument 发送到 CorelDraw?

我 运行 遇到了类似的问题,将相同的图形发送到 AutoCAD,但能够通过将内容发送到命令行来解决它。

在您的 VBA 代码中您可以自己定义它:

Const cdrCenterAlignment = 3

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

引用 CorelDRAW 库(工具 > 引用),常量将被定义,您可以使用实际的 CorelDRAW 类型和 API 并享受 IntelliSense 和自动完成功能,而不是与 Object 接口并不断参考文档以了解哪些成员在哪些对象上可用 - 并在您输入错误时处理 运行-time 错误 438,因为后期绑定代码将愉快地编译并且仅在 [=] 处解析22=]-次.

添加对 CorelDRAW 类型库的引用将允许您编写在编译时解析的早期绑定代码,就像您针对VBAExcel 类型库,默认在 Excel VBA 项目中引用。