跨VBA发送命令

时间:2017-08-14 15:07:20

标签: excel vba cross-platform coreldraw

我在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变量未定义"或"类型不匹配"如果我把它称为字符串。 如果可能的话,我是否可以在使用Excel时将此命令/参数发送给CorelDraw?

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

2 个答案:

答案 0 :(得分:1)

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

Const cdrCenterAlignment = 3

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

答案 1 :(得分:0)

引用CorelDRAW库(工具>参考)并定义常量,您可以使用实际的CorelDRAW类型和API,享受IntelliSense和自动完成,而不是不断地对Object接口工作指的是哪些成员可用于哪些对象的文档 - 以及每当你输入错误时处理运行时错误438,因为后期绑定代码将很乐意编译并且只能在运行时解析。

添加对CorelDRAW类型库的引用将允许您编写在编译时解析的早期绑定代码,就像您针对VBA进行的函数调用一样或Excel类型库,默认情况下在Excel VBA项目中引用。