2013-10-09 152 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

对不起没有安装Visio 2003但您可能会发现[Visio 2003 SDK](http://msdn.microsoft.com/en-us/library/office/aa272275(v = office.11​​).aspx)有用。 – PatricK

回答

1

层是非常简单的VBA: 这将移除页面中所有层成员:

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 
相关问题