首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用形状工作表为Visio形状创建唯一ID

使用形状工作表为Visio形状创建唯一ID
EN

Stack Overflow用户
提问于 2013-06-08 08:35:02
回答 1查看 3.8K关注 0票数 1

我不是Visio的新手,也不是编程的新手,但我是在Visio中进行开发的新手。我使用的是2007,并使用形状数据创建了自己的自定义形状。我想在绘图上下文中为所有形状创建一个UniqueID。我已经创建了一个名为'Shape UniqueID‘的形状数据元素。(ShapeSheet Prop.Shape_Unique_ID)我尝试使用下面的公式语法在属性的Shape.UniqueID‘ShapeSheet’单元格中生成一个唯一的ID (Value属性):

代码语言:javascript
复制
 =UniqueID(visGetOrMakeGUID)   and =UniqueID(1) But Visio does not recognize this as a valid Formula..

我还尝试使用DATA1():=Guard(Data1()),它为我提供了一个惟一的值,但如果复制形状,它不会更新。

我已经下载了2007SDK,但找不到Shapesheet函数来读取属性。

我还看到你可以设置页面,使UniqueID总是在所使用的形状上,但我不知道如何打开它。

我的“首选”是使用一个形状数据元素并设置它,但是......

如果您有什么想法,我会很感激。谢谢..。史考特

EN

回答 1

Stack Overflow用户

发布于 2013-06-11 03:24:46

[请注意,此答案是here的粗略副本]

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

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

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

下面是一些示例代码,演示了如何使用UniqueID:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16994806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档