Vb.net 对Visio应用循环页面.layout

Vb.net 对Visio应用循环页面.layout,vb.net,visio,Vb.net,Visio,我目前正在尝试自动组织使用page.layout功能以编程方式添加到visio页面的形状。我希望通过GUI应用循环布局 目前,我已通过Visio中的宏录制器录制了以下代码,并输出: Dim UndoScopeID1 As Long UndoScopeID1 = Application.BeginUndoScope("Lay Out Shapes") Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowP

我目前正在尝试自动组织使用page.layout功能以编程方式添加到visio页面的形状。我希望通过GUI应用循环布局

目前,我已通过Visio中的宏录制器录制了以下代码,并输出:

Dim UndoScopeID1 As Long
UndoScopeID1 = Application.BeginUndoScope("Lay Out Shapes")
Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLOPlaceStyle).FormulaForceU = "6"
Application.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLORouteStyle).FormulaForceU = "16"
Application.ActiveWindow.Page.Layout
Application.EndUndoScope UndoScopeID1, True
我已将其转换为在VB.NET应用程序中使用,如下所示:

Dim UndoScopeID1 As Long
    UndoScopeID1 = vApp.BeginUndoScope("Lay Out Shapes")

    Dim visSectionObject, visRowPageLayout, visPLOPlaceStyle, visPLORouteStyle As String

    vApp.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLOPlaceStyle).FormulaForceU = "6"
    vApp.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLORouteStyle).FormulaForceU = "16"
    vApp.ActiveWindow.Page.Layout()
    vApp.EndUndoScope(UndoScopeID1, True)
请注意,vApp也已申报

此代码可以工作,但应用径向页面布局,而不是圆形页面布局


有人知道我必须传递什么作为visSectionObject、visRowPageLayout、visPLOPlaceStyle、visPLORouteStyle中的值才能实际输出一个循环页面布局吗?或者我还有别的事要做。这似乎没有在任何容易访问的地方记录下来。

我找到了Visio 2003的SDK说明,其中解释了如何使用它:

用链接中的索引值替换变量效果很好

解决方案示例:

Dim UndoScopeID1 As Long
UndoScopeID1 = vApp.BeginUndoScope("Lay Out Shapes")

'vApp.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLOPlaceStyle).FormulaForceU = "6"
'vApp.ActiveWindow.Page.PageSheet.CellsSRC(visSectionObject, visRowPageLayout, visPLORouteStyle).FormulaForceU = "16"
vApp.ActiveWindow.Page.PageSheet.CellsSRC(1, 24, 8).FormulaForceU = "6"
vApp.ActiveWindow.Page.PageSheet.CellsSRC(1, 24, 9).FormulaForceU = "16"
vApp.ActiveWindow.Page.Layout()
vApp.EndUndoScope(UndoScopeID1, True)