vba - 枚举的后期绑定(bind)问题

标签 vba visio

在开发过程中,一切都很好,早期绑定(bind)很有效,但现在我已经转向后期绑定(bind)以进行生产,并且我遇到了 Visio 枚举问题。如下:

 Set AppVisio = CreateObject("visio.application")
 Set vsoSelection = AppVisio.ActiveWindow.Selection
 Call vsoSelection.GetIDs(lngShapeIDs)

 With .Shapes.ItemFromID(lngShapeIDs(0))
    .CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = sngShapeHCenter
    .CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = sngShapeVCenter
    .CellsSRC(visSectionObject, visRowXFormOut, visXFormWidth).FormulaU = sngShapeWidth
    .CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight).FormulaU = sngShapeHeight
 End With

早期绑定(bind)

visSectionObject, visRowXFormOut, visXFormPinX etc.

全部解析,但我无法让它们在后期绑定(bind)中解析。

我尝试添加 AppVisio。为参数添加前缀无效,任何人都可以帮助并告诉我引用枚举的正确方法吗?

我尝试使用 Visio VBA 记录器来查看它提供的内容,但它并不像我希望的那样详细(是的,我知道,它是如此详细,但不是在这个场合)。

这需要适用于 Visio 2010 和 2013 等。

最佳答案

这是后期绑定(bind)的权衡之一,或者更准确地说,是不在“工具”>“引用”中设置显式引用。预定义的枚举将不再可用。

您必须将枚举替换为其数值 ( see e.g. this list )。

例如,visRowXFormOut 的数值为 1,您可以在“立即”窗口中自行检查:

?visRowXFormOut
1

因此,您可以将 visRowXFormOut 的所有实例替换为 1,或者将 visRowXFormOut 声明为常量:

Const visRowXFormOut As Integer = 1

并保持其余代码不变。

关于vba - 枚举的后期绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344409/

相关文章:

java - Car 类和 Road 类之间的关系 - UML 和 Java 代码

excel - 不允许用户窗体文本框中的十进制数字 - VBA

excel - 确定 Excel 单元格是否脏?

vba - 从 VBA 中的并集生成的行范围中删除行

parameters - 如何在 visio 的类图中使用其他属性类型?

vba - 安装 2 个版本时在 vba 中创建 Visio 实例

vba - 循环添加引用正确单元格坐标但在错误工作表上的超链接

vba - 从新列的日期值中减去一年

windows - 以编程方式操作visio格式文件

database-design - Toad ERD 到 Visio ER 图的转换