2017-05-09 4 views
0

Ich versuche derzeit, Formen automatisch zu organisieren, die ich programmgesteuert zu einer Visio-Seite mit der Funktion page.layout hinzugefügt habe. Ich möchte ein kreisförmiges Layout anwenden, wie Sie über die GUI tun können.Anwenden eines kreisförmigen page.layout auf Visio

Zur Zeit habe ich den folgenden Code über Makroaufzeichnung in Visio aufgezeichnet, die Ausgänge:

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 

ich dies in meinem VB.NET-Anwendung für die Verwendung umgesetzt haben sich wie folgt:

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) 

Beachten Sie, dass vApp wurde ebenfalls deklariert.

Dieser Code funktioniert, verwendet jedoch ein radiales Seitenlayout anstelle eines kreisförmigen Seitenlayouts.

Weiß jemand, was ich als die Werte in visSectionObject, visRowPageLayout, visPLOPlaceStyle, visPLORouteStyle übergeben muss, damit es tatsächlich ein kreisförmiges Seitenlayout ausgibt? Oder muss ich noch etwas anderes tun? Dies scheint nirgendwo leicht zugänglich zu sein.

Antwort

1

Ich habe die SDK Hinweise für Visio 2003 gefunden, die erklären, wie das funktioniert:

die Variablen Ersetzen Sie dabei mit der Indexwerte von den Links funktioniert gut.

Beispiel der Lösung:

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)