向 Visio 应用循环 page.layout

Apply a circular page.layout to Visio

我目前正在尝试自动组织我使用 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)