我在用selection的selectelement2方法时,遇到了如下问题:编译错误:函数或接口标记为限制的,或函数使用了visual basic不支持的自动化(automation)类,如下图,不知道该如何解决,请各位大神帮忙。

解决方案 »

  1.   

    出现此错误提示,说明那个接口并不是给你用的。
    查一下相关文档,看看你的需求,在VBA中应该调用哪个接口函数吧。
      

  2.   

    就是这个函数,并且还给了官方样例,虽然即使官方例子我也运行不出来,这个是它在VBA中的定义:
      

  3.   

    你试试把变量类型重新定义一下吧:
    dim InputObjectType(0) as CATSafeArrayVariant另外,它的“字符串”怎么是CATBSTR类型?
    这恐怕也是个问题。不知道变量定义成CATBSTR类型后,能不能直接用字符串给它赋值?
    如果可以的话,你试试多定义两个变量,调用时第2个参数和接收返回值,都用这种类型的变量。
      

  4.   

    我试了一下,发现CATSafeArrayVariant不是预定义好的类,但是帮助文档里却又不这么说。
      

  5.   

    哈哈…………
    它这简直就是乱来嘛!
    你自己定义一个Type吧,就是 SAFEARRAY 类型,把这个类型名“换个壳”。还有那个 CATBSTR 类型,估计可以给它这么定义:
    Private Type CATBSTR
       Member As String
    End Type
      

  6.   

    如果需要在“多个模块中使用”,那这类型定义就要写在一个标准模块中,定义成Public的。
    只是在单个模块中使用的话,就在要用的模块中定义成Private的就行了。当然,无论哪种情况,写在标准模块中定义成Public的也照样可以。
      

  7.   

    只需要dim 不需要as,试试吧
      

  8.   

    你这是在VB里面调用catia的类库吗?确认你的工程引用里面是否已经引用了相应的dll或exe。
    觉着官方例子都不能用应该是你的环境都没弄好或者前置的对象都没建立好导致的。
      

  9.   


    a) Dim Selection As Selectiom 更改为 Dim selection(去掉后面的 As Selection)
    b) 检查UserForm的ShowModal的属性并设为True