【问题标题】:Create a Unique ID for a Visio Shape use the Shape Sheet使用形状表为 Visio 形状创建唯一 ID
【发布时间】:2013-06-04 09:25:18
【问题描述】:

我对 Visio 和编程并不陌生,但我对在 Visio 中进行开发并不陌生。 我正在使用 2007 并正在使用形状数据创建自己的自定义形状。 我想在绘图的上下文中为我的所有形状创建一个 UniqueID。 我创建了一个名为“Shape UniqueID”的形状数据元素。 (ShapeSheet Prop.Shape_Unique_ID) 我尝试在属性的 ShapeSheet“值”单元格中使用下面的公式语法生成唯一 ID(Shape.UniqueID 属性):
=UniqueID(visGetOrMakeGUID) 和 =UniqueID(1) 但是 Visio 不认为这是一个有效的公式..

我也尝试使用 DATA1(): =守卫(数据1()) 这给了我一个独特的价值,但如果你复制形状,它不会更新。

我已下载 2007 SDK,但找不到用于读取属性的 Shapesheet 函数。

我还看到您可以设置页面,以便始终在使用的形状上显示唯一 ID,但我不知道如何打开它。

我的“偏好”是使用形状数据元素并设置它但是......

任何想法都会受到赞赏? 谢谢...斯科特

【问题讨论】:

    标签: visio shapes unique-id shapesheet


    【解决方案1】:

    [请注意,此答案与here 的答案大致相同]

    UniqueIDs 只能在代码中访问,也就是说,没有会返回唯一 ID (GUID) 的 ShapeSheet 函数。

    默认情况下,形状开始时没有 UniqueID,因此您必须在代码中分配它。某些形状(例如页外连接器形状)将唯一 ID 存储在 ShapeSheet 中,以便它们可以跟踪哪个形状连接到哪个形状,但这由插件管理。

    您可以将 GUID 存储在 ShapeSheet 单元格(通常是用户单元格)中,但通常如果您有对形状的引用来读取单元格,那么您也可以读取 .UniqueID 属性。如果您正在寻找其他方法来识别形状,那么 shp.ID(或 ID() ShapeSheet 函数)将返回页面唯一的 ID,因此这也是需要考虑的事项

    这里有一些示例代码演示了如何使用 UniqueID:

    Sub UniqueIDsDemo()
    
    Dim vPag As Page
    Set vPag = ActivePage
    
    Dim vShp As Shape
    Set vShp = vPag.DrawRectangle(1, 1, 1, 1)
    Debug.Print vShp.NameID & " UniqueID = '" & vShp.UniqueID(visGetGUID) & "'"
    
    Dim sGUID As String
    sGUID = vShp.UniqueID(visGetOrMakeGUID)
    
    Debug.Print vShp.NameID & " UniqueID = '" & vShp.UniqueID(visGetGUID) & "'"
    
    vShp.AddSection visSectionUser
    Dim rowIdx As Integer
    Dim cellName As String
    cellName = "UniqueID"
    rowIdx = vShp.AddNamedRow(visSectionUser, cellName, visTagDefault)
    vShp.CellsSRC(visSectionUser, rowIdx, visUserValue).FormulaU = sGUID
    
    Debug.Print vShp.NameID & "!User." & cellName & " = '" & vShp.CellsU("User." & cellName).ResultStrU("") & "'"
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多