3

私は現在、VBScriptを使用してVisioを自動化しようとしています。

「BeginX」を指し、「PosX」をターゲットとする既存の接続「Verbindung」を持つVisioシェイプ「Start」があります(したがって、動的な終了があります)。

私はダイナミックエンドを変更することができず、「ストップ」の形に接着されています。:(

図形が正常に接続されるように既存のコネクタを移動する方法はありますか?

ここに画像の説明を入力してください

Set startShape = CreateShape(visioApp,"ProzessSchablone.vss","Start",1,10)
Set stopShape = CreateShape(visioApp,"ProzessSchablone.vss","Stop",3,10)
Set startConnectedFrom = startShape.FromConnects.Item(1)    'to retrieve value: connect

そのようなものは機能しません:

startConnectedFrom.Cells("BeginX").glueToPos stopShape,0.5,0.5

また、「BeginX」の代わりに「PosX」を試してみましたが、うまくいきません。:(

誰かがそれについて私を助けてくれますか?

4

1 に答える 1

1

取得した 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 つを実行すると、次の結果が得られます (注 - エラー チェックは行われず、コードの呼び出し元のドキュメントにマスターが存在すると想定されます)。

Visio シェイプの接続

于 2013-03-20T20:47:50.483 に答える