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