2011-03-13 46 views
1

我需要一些关于如何查询vb或vba中的VISIO Shape.cells集合的建议。检查Visio Shape.Cell集合

我已经写了一个应用程序来放置一个页面上的形状,我可以在将它放在页面上后更改其名称。现在我想检查形状细胞集合。

谢谢

回答

4

Visio形状细胞分成不同的部分。这些部分可能包括用户单元,操作或字符设置。还有一系列命名单元格,您只能(我认为)通过名称访问(即PinX或PinY)。

因此,要查询形状的单元格,首先必须找出你正在谈论的单元格的哪一部分。要循环访问单元部分,首先需要获取部分中的行数,然后使用形状对象上的CellsSRC方法遍历该部分。

Dim TheShp As Visio.Shape 
Set TheShp = ActiveWindow.Selection.Item(1) 
Dim TheSec As Visio.Section 
Dim TheCell As Visio.Cell 
Set TheSec = TheShp.Section(visSectionUser) 
Dim RowNum As Long 
For RowNum = 0 To TheSec.Count - 1 
    Set TheCell = TheShp.CellsSRC(visSectionUser, RowNum, 0) 
    Debug.Print TheCell.Formula 
    Debug.Print TheCell.Result(visNone) 
Next CellNum 

如果在很多形状中存在大量的单元格,以这种方式循环可能会很慢。如果您需要访问大量单元格的公式或结果,则Page对象上有GetFormulas和GetResults方法,这些方法使用SRC值数组和形状ID来同时提取所有这些公式/结果。

+0

感谢您的回复。我会尝试你的建议。 – Erwin1 2011-03-14 13:31:42

+0

它的工作原理。谢谢。 – Erwin1 2011-03-14 13:55:42