1

私は最も単純なことをしようとしています-GlueToでマクロを使用してVisioで2つの2D形状を接続します。2つの図形を削除し、「In」と「Out」の接続ポイントを追加しました。今、私がそれらをマウスで接続しようとしているとき-それはすべて大丈夫です。次に、マクロを記録しました。

Sub Macro1()

'Enable diagram services
Dim DiagramServices As Integer
DiagramServices = ActiveDocument.DiagramServicesEnabled
ActiveDocument.DiagramServicesEnabled = visServiceVersion140

Dim UndoScopeID1 As Long
UndoScopeID1 = Application.BeginUndoScope("1")
ActiveWindow.DeselectAll
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1), visSelect
Application.ActiveWindow.Selection.Move -1.161417, 0.669291
Dim vsoCell1 As Visio.Cell
Dim vsoCell2 As Visio.Cell
Set vsoCell1 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsU("PinX")
Set vsoCell2 = Application.ActiveWindow.Page.Shapes.ItemFromID(15).CellsSRC(7, 0, 0)
vsoCell1.GlueTo vsoCell2
Dim vsoCell3 As Cell
Dim vsoCell4 As Cell
Set vsoCell3 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionConnectionPts, 0, 0)
Set vsoCell4 = Application.ActiveWindow.Page.Shapes.ItemFromID(15).CellsSRC(visSectionConnectionPts, 0, 0)
vsoCell3.GlueTo vsoCell4
Application.EndUndoScope UndoScopeID1, True

'Restore diagram services
ActiveDocument.DiagramServicesEnabled = DiagramServices

End Sub

そして、それは機能していません...それらの形状を接着解除して記録されたマクロを実行すると、「このアクションには不適切なソースオブジェクト」がスローされます

どうすれば修正できますか?

4

1 に答える 1

2

記録されたコードは、マクロを記録したときの図面の状態に非常に固有です。図面を編集すると、すぐに壊れます。たとえば、記録されたコードは、ページにすでに1次元の図形があり、ページの図形コレクションに15のIDがあることを前提としています。記録されたマクロには、他にも非常に脆弱な仮定がたくさんあります。

機能要件と図面の状態について行うことができる仮定を知っているので、マクロを自分でコーディングする方法を学ぶことをお勧めします。図形を相互に接続するコードを作成する方法については、 『Visioソリューションの開発』のこのセクションを参照してください。プログラムから接続された図面を作成する

于 2012-08-04T20:26:47.653 に答える