我在用selection的selectelement2方法時,遇到了如下問題:編譯錯誤:函式或介面標記為限制的,或函式使用了visual basic不支持的自動化(automation)類,如下圖,不知道該如何解決,請各位大神幫忙。
uj5u.com熱心網友回復:
出現此錯誤提示,說明那個介面并不是給你用的。查一下相關檔案,看看你的需求,在VBA中應該呼叫哪個介面函式吧。
uj5u.com熱心網友回復:
就是這個函式,并且還給了官方樣例,雖然即使官方例子我也運行不出來,這個是它在VBA中的定義:
uj5u.com熱心網友回復:
連“官方例子”都不能運行,那還有什么辦法。
說明檔案怎么是英文的?這是外國的軟體么……
不知道能不能給他們的技術支持發個郵件咨詢一下。

uj5u.com熱心網友回復:
你試試把變數型別重新定義一下吧:dim InputObjectType(0) as CATSafeArrayVariant
另外,它的“字串”怎么是CATBSTR型別?
這恐怕也是個問題。

不知道變數定義成CATBSTR型別后,能不能直接用字串給它賦值?
如果可以的話,你試試多定義兩個變數,呼叫時第2個引數和接識訓傳值,都用這種型別的變數。
uj5u.com熱心網友回復:
我試了一下,發現CATSafeArrayVariant不是預定義好的類,但是幫助檔案里卻又不這么說。

uj5u.com熱心網友回復:
哈哈…………
它這簡直就是亂來嘛!
你自己定義一個Type吧,就是 SAFEARRAY 型別,把這個型別名“換個殼”。
還有那個 CATBSTR 型別,估計可以給它這么定義:
Private Type CATBSTR
Member As String
End Type
uj5u.com熱心網友回復:
如果需要在“多個模塊中使用”,那這型別定義就要寫在一個標準模塊中,定義成Public的。只是在單個模塊中使用的話,就在要用的模塊中定義成Private的就行了。
當然,無論哪種情況,寫在標準模塊中定義成Public的也照樣可以。
uj5u.com熱心網友回復:
是不是型別庫參考的不對呀?uj5u.com熱心網友回復:
只需要dim 不需要as,試試吧uj5u.com熱心網友回復:
你這是在VB里面呼叫catia的類別庫嗎?確認你的工程參考里面是否已經參考了相應的dll或exe。覺著官方例子都不能用應該是你的環境都沒弄好或者前置的物件都沒建立好導致的。
uj5u.com熱心網友回復:
a) Dim Selection As Selectiom 更改為 Dim selection(去掉后面的 As Selection)
b) 檢查UserForm的ShowModal的屬性并設為True
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/20007.html
標籤:VBA
下一篇:kiel5運行問題
