放置

时间:2015-05-27 17:18:17

标签: visio-vba

我只需要一些方向,如果我知道在哪里可以找到答案。我以编程方式将表单上的形状作为db查询的输出删除。那些形状有许多属性(prop。)。我想放弃形状,然后将这些属性设置为某些东西。我正在做的方式是给我错误。我怀疑我失踪了一步。这是我如何删除形状

Dim vsoShape As Visio.Shape
Dim vsoMaster As Visio.Master

For lngRow = LBound(lngRowIDs) + 1 To UBound(lngRowIDs) + 1
    varRowData = vsoDataRecordset.GetRowData(lngRow)

    Set vsoMaster = Visio.Documents(varRowData(14) + ".vss").Masters(varRowData(8))

    dblX = dblX + 0.5
    dblY = dblY + 0.5

    Set vsoShape = ActivePage.Drop(vsoMaster, dblX, dblY)

    'vsoShape.Cells("Prop.title").Formula = Chr(34) & varRowData(0) & Chr(34)
    'vsoShape.Cells("Prop.Entitlements").Formula = Chr(34) & varRowData(1) & Chr(34)
    'vsoShape.Cells("Prop.environ").Formula = Chr(34) & varRowData(2) & Chr(34)
    'vsoShape.Cells("Prop.netZone").Formula = Chr(34) & varRowData(3) & Chr(34)
    'vsoShape.Cells("Prop.Mem").Formula = Chr(34) & varRowData(4) & Chr(34)
    'vsoShape.Cells("Prop.vcpu_cores").Formula = Chr(34) & varRowData(5) & Chr(34)
    'vsoShape.Cells("Prop.sockets").Formula = Chr(34) & varRowData(6) & Chr(34)
    'vsoShape.Cells("Prop.hosts").Formula = Chr(34) & varRowData(7) & Chr(34)
    'vsoShape.Cells("Prop.shape").Formula = Chr(34) & varRowData(8) & Chr(34)
    'vsoShape.Cells("Prop.shapeKey").Formula = Chr(34) & varRowData(15) & Chr(34)            
Next lngRow

我认为我需要做的是在删除它之后获取一些形状ID然后使用该形状id来设置值。错误似乎是它无法找到属性名称。所有prop.X名称都是正确的。我得到的错误是

  

运行时错误' -2032466967(86db03e9)':意外的文件结尾

我是使用Visio VBA的新手。我更习惯Excel。

迈克尔。

1 个答案:

答案 0 :(得分:0)

这不是一个答案,而是一个解决方案。为了得到答案,我需要知道为什么在有多个组的情况下访问具有形状的组的属性时遇到问题。解决方案是重新设计所有自定义形状,只有一个组。完成后,上面列出的用于设置属性值的代码可以正常工作。

我怀疑最好的解决方案是必须弄清楚如何直接引用嵌套组属性。

感谢。

迈克尔