2017-08-14 206 views
0

我正在VBA中编写一个脚本,在CorelDraw中创建一个图形。我无法集中文本。下面是CorelDraw中的宏编辑器正常工作代码:通过VBA发送命令

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,但能够解决它通过发送到命令行的东西。

+1

Corel库链接到Excel VBA项目(通过工具 - >参考)? –

+0

^^那。参考CorelDRAW库和常量将被定义,并且您可以使用实际的CorelDRAW类型和API,并享受IntelliSense和自动完成,而不是针对“Object”接口工作,并经常参考文档以了解哪些对象可用于哪些对象 - 每当你输入一个错字时处理运行时错误438,因为后期绑定的代码会很高兴地编译并且只能在运行时解决。 –

+0

我没有链接它们,因为如果将文档发送到其他计算机,我不知道该链接将如何传输。链接是否仍然存在?或者在将链接发送到其他计算机时必须重新链接? –

回答

0

参考在CorelDRAW中图书馆(工具>参考)和常量将被定义,你可以使用实际的CorelDRAW类型和API,并享受智能感知和自动完成,而不是针对Object界面进行工作,并不断地参考文档,了解哪些对象可用于哪些对象 - 每当出现拼写错误时处理运行时错误438,因为后期绑定的代码将会高兴地编译并且只能在运行时解决。

添加到CorelDRAW中类型库的引用将允许你写早期绑定代码,解决在编译时,酷似函数调用你正在做对VBAExcel类型库,这些库引用默认情况下在Excel VBA项目中。

+0

我正在尝试解决手动链接问题,因为此宏的目标是减少和简化用户界面。如果我将它链接到CorelDraw,如果我将文档发送到装有CorelDraw的另一台计算机,该链接是否会保持活动状态?如果是这样,这会让我的代码变得更容易,并且无法尝试解决它。 –

+1

@JonnyKriefall如果您在另一台计算机上具有相同版本的CorelDraw,它一定会有效。 (也许它也可以在不同的版本上运行,我不知道CorelDraw的版本库如何:)) –

+0

@JonnyKriefall如果在运行你的代码的每台机器上安装了相同版本的CorelDRAW,则没有什么可担心的。如果没有,请确保您引用了任何用户可以使用的最早版本,并且*不应该有任何问题。与Scripting运行时和您可能引用的任何其他库一样。 –