2017-08-14 311 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運行時和您可能引用的任何其他庫一樣。 –