取得した Connect オブジェクトから形状参照を取得していないようです。では、次のようなものはどうでしょうか。
Set shpConn = shpStart.FromConnects(1).FromSheet
Dim vFromCellStop As Cell
Set vFromCellStop = shpConn.CellsU("EndX")
vFromCellStop.GlueToPos shpStop, 0.5, 0.5
Visio 2007 を使用している場合は、元のコネクタを削除して、Shape オブジェクトでAutoConnectメソッドを使用する方が簡単な場合があります。以前のバージョンを見ている場合、またはどのセルがどのセルに接着するかを具体的に扱いたい場合は、Connects と FromConnects の方が優れています。
両方の方法の VBA の例を次に示します。
Sub AutoConnectExample()
Dim shpStart As Shape
Dim shpStop As Shape
Dim vPag As Page
Set vPag = ThisDocument.Pages(1)
Set shpStart = vPag.Drop(ThisDocument.Masters("Start"), 1, 3)
Set shpStop = vPag.Drop(ThisDocument.Masters("Stop"), 3, 1)
shpStart.AutoConnect shpStop, visAutoConnectDirNone
End Sub
Public Sub ConnectWithGlueExample()
Dim shpStart As Shape
Dim shpStop As Shape
Dim vPag As Page
Dim shpConn As Shape
Set vPag = ThisDocument.Pages(1)
Set shpStart = vPag.Drop(ThisDocument.Masters("Start"), 5, 7)
Set shpStop = vPag.Drop(ThisDocument.Masters("Stop"), 7, 5)
Set shpConn = vPag.Drop(Application.ConnectorToolDataObject, 1, 1)
Dim vFromCellStart As Cell
Dim vToCellStart As Cell
Set vFromCellStart = shpConn.CellsU("BeginX")
Set vToCellStart = shpStart.CellsSRC(visSectionObject, visRowXFormOut, 0)
Dim vFromCellStop As Cell
Dim vToCellStop As Cell
Set vFromCellStop = shpConn.CellsU("EndX")
Set vToCellStop = shpStop.CellsSRC(visSectionObject, visRowXFormOut, 0)
vFromCellStart.GlueTo vToCellStart
vFromCellStop.GlueTo vToCellStop
End Sub
これら 2 つを実行すると、次の結果が得られます (注 - エラー チェックは行われず、コードの呼び出し元のドキュメントにマスターが存在すると想定されます)。
