2013-10-09 3 views
1

Visio 2003을 사용 중이고 선택한 항목을 "지운 편지함"이라는 숨겨진 레이어로 이동하는 매크로를 작성하고 싶습니다.한 레이어에서 다른 레이어로 셰이프를 이동하려면 Visio 매크로를 어떻게 작성합니까?

나는 매크로를 기록하려고 시도했는데 이것만으로도 레이어와 상호 작용하는 방법을 알 수 없었습니다. :(

Sub Move_to_Delete_Layer() 
' 
' Moves the selected item(s) to the "zDeleted Items" Layer (which typically remains hidden). This is basically an "undo-able" way to delete the item. 
' 
' Keyboard Shortcut: Ctrl+d 
' 

    Dim UndoScopeID1 As Long 
    UndoScopeID1 = Application.BeginUndoScope("Layer") 
    Application.ActiveWindow.Page.Shapes.ItemFromID(175).CellsSRC(visSectionObject, visRowLayerMem, visLayerMember).FormulaU = """9""" 
    Application.EndUndoScope UndoScopeID1, True 

End Sub 

편집 :..

감사는 SDK가 조금 도움이되지만 작업 코드를 생성 할 불행히도 충분하지 내가 뭘 원하는지 생각은 본질적으로

Dim myLayer As Visio.Layer 
Set myLayer = Application.ActiveWindow.Page.Layers.Add("Deleted Items") 
myLayer.Add Application.ActiveWindow.Selection.ContainingShape, 1 

하지만입니다 코드가 작동하지 않습니다. "런타임 오류 '-2032465766 (86db089a)': 요청한 작업이 현재 비활성화되었습니다."오류 메시지가 나타납니다.

그리고 도형을 제거하려고합니다. y 레이어가 이미 있습니다. 어떻게하는지 잘 모르겠습니다.

+0

에 모양을 추가합니다 : 이 페이지에서 모든 계층 구성원을 제거합니다 2003이 있지만 [Visio 2003 SDK] (http://msdn.microsoft.com/en-us/library/office/aa272275(v=office.11) .aspx)가 유용 할 수 있습니다. – PatricK

답변

1

레이어 VBA에서 매우 간단하다 : 미안의 Visio가없는

dim i as integer 
for i = ShpObj.LayerCount to 1 Step -1 
    dim Lay as Visio.Layer 
    set Lay = ShpObj.Layer(i) 
    Lay.Remove ShpObj 
next 

이것은 당신의 삭제 계층

Dim myLayer As Visio.Layer 
Set myLayer = Application.ActiveWindow.Page.Layers.Add("Deleted Items") 
myLayer.Add Application.ActiveWindow.Selection(1), 1 
관련 문제