Visio VBA,形状为类

时间:2014-03-21 20:11:22

标签: vba excel-vba visio visio-vba excel

我正在建立一个用于管理工程图纸的visio系统。计划是创建常见形状的模板,并将每个形状与一堆代码相关联,以方便编辑。

每个形状应该基本上是一个类,其中将形状拖动到绘图中实例化其中一个对象。每个形状都应该有一个双击时执行的方法,以便于编辑字段。

每个形状实例也应该有单独的数据,这样改变一个形状的部分对同一个"类"的其他形状没有任何影响。

我是C和Python的中等知识编程,但我不了解VBA或Visio环境的基础知识。我最困惑的是名称空间。我目前在模板内有一个模块(不是类)。打电话给模板" foo.vss",模块" bar"和我想打电话的方法" baz"。在模板的编辑模式下工作时,我可以将它的双击行为设置为= CALLMACRO(" foo.bar.baz"),一切都按预期工作。但是,当我将此形状拖动到图形中时(模板也在图形中打开)执行相同操作会引发系统错误(& H80004005(-2147467259)未指定错误)。为什么?为什么foo模板不在新绘图的命名空间中(这是我一直假设的导致错误...)?

任何实施此建议的建议?或指向一些好的资源?我只是想构建一个简单的面向对象的系统,我被迫进入的编程环境是一场噩梦。

1 个答案:

答案 0 :(得分:0)

命名空间与文档有关,以及如何使用RUNMACRO函数(我不知道CALLMACRO函数)。要在模板中调用方法,您必须指定要调用的VBA项目,这是模板的VBA项目名称。

请注意,您也可以在Visio中使用相同参数的CALLTHIS,但VBA中的函数将以双击形状作为参数。