[请注意,此答案与此处的答案大致相同]
UniqueID只能在代码中访问,即没有返回唯一 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