2013-06-08 6 views
1

Visio 나 프로그래밍에 익숙하지 않지만 Visio에서 새로 개발했습니다. 저는 2007 년을 사용 중이며 Shape Data로 내 자신 만의 모양을 만들고 있습니다. 그림 컨텍스트 내 모든 도형에 대해 고유 ID를 생성하려고합니다. 'Shape UniqueID'라는 Shape 데이터 요소를 만들었습니다. (ShapeSheet Prop.Shape_Unique_ID) 속성에 대한 셰이프 시트 '값'셀의 아래 수식 구문을 사용하여 고유 ID (Shape.UniqueID 속성)를 생성하려고했습니다 :
= 고유 ID (visGetOrMakeGUID) 및 = 고유 ID) 그러나 Visio를Visio 셰이프의 고유 ID 만들기 모양 상자 사용

나는 또한 DATA1를 사용하려고 .. 유효한 공식으로 이것을 인식하지 않습니다() : = 가드 (데이터 1()) 나에게 독특한 가치를 제공하지만 복사하는 경우이 업데이트되지 않습니다 그 형태.

2007 SDK를 다운로드했으며 속성을 읽을 셰이프 시트 함수를 찾을 수 없습니다.

고유 ID가 항상 사용되는 도형에 있도록 페이지를 설정할 수 있지만 켜는 방법을 알 수는 없습니다.

내 "선호"

어떤 아이디어 주시면 감사하겠습니다 ...... 셰이프 데이터 요소를 사용하고 설정하지만 것입니다? 감사합니다 ... 스콧

답변

1

고유 한 ID를 반환 거 야 셰이프 기능이 없다, 즉

UniqueID의 코드에서만 액세스 할 수 있습니다

(GUID를) [이 대답은 하나 here의 거친 중복 참고] .

기본적으로 셰이프는 UniqueID없이 시작되므로 코드에 할당해야합니다. 오프 페이지 커넥터 모양과 같은 일부 셰이프는 셰이프 시트에 고유 한 ID를 저장하여 어느 셰이프가 어느 셰이프에 연결되어 있는지를 추적 할 수 있지만 추가 기능에 의해 관리됩니다.

셰이프 시트 셀 (일반적으로 사용자 셀)에 GUID를 저장할 수 있지만 일반적으로 셀을 읽을 셰이프에 대한 참조가 있으면 .UniqueID 속성도 읽을 수 있습니다. 모양을 식별하는 다른 방법을 찾고 있다면 shp.

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 
: 그뿐만 아니라

을 고려하는 것이 될 수 있도록 ID (또는 ID() 셰이프 기능) 다음 UniqueIDs를 사용하는 방법을 보여 일부 샘플 코드의 페이지에 고유의 ID를 반환합니다