[[20160508103821]] 『コネクタのグループ化』(佐藤) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コネクタのグループ化』(佐藤)
初めまして、佐藤と申します。
コネクタをテキストボックスとグループ化すると、コネクタに設定したはずの接続先オートシェイプが取得できずに困っています。

下記のソースで、
 1、最後のShapeCon.ConnectorFormat.BeginConnectedShape.nameをプリントしようとすると、エラーになってしまいます。
 2、グループ化をしないと期待した通りのものがプリントされます。
 3、グループ化しても、ShapeCon.ConnectorFormat.BeginConnectedとShapeCon.ConnectorFormat.BeginConnectionSiteとは期待通りにプリントされます。
 4、グループ化の後に、コネクタの再接続をするようにしても、結果は同じでした。
 5、グループ化した親シェイプ(ここでは、shapeGroup)のConnectorFormat.BeginConnectedShapeに保持しているのかと思い、これをプリントするようにしても結果は同じでした。
 6、プリントしないようにすると、エラーにはなりません。
 7、この後、シート上に作成されたコネクタを移動すると、テキストボックスも一緒に移動します。(なので、グループ化に問題はないと考えています。)
 8、コネクタをクリックすると、両端の接続ポイントが赤くなります。
 9、また、接続しているシェイプ(Shape1かShape2)を移動すると、コネクタの再接続が行われます。
 10、なので、グループ化した後はコネクタの接続先シェイプは、ShapeCon.ConnectorFormat.BeginConnectedShapeでなく、何処か別のところに保持しているのではないかと推察しているのですが、どなたかご存知の方がいれば、ご教授いただけないでしょうか?
 11、または、接続先のシェイプ(Shape1かShape2)から、接続しているコネクタを特定することは可能でしょうか?

以上、よろしくお願いします。

 <ソースコード>

    Dim Shape1 As shape, Shape2 As shape, _
        ShapeCon As shape, shapeEdit As shape, shapeGroup As shape

    Set Shape1 = ActiveSheet.Shapes.AddShape _
        (msoShapeOval, 100, 100, 50, 50)
    Set Shape2 = ActiveSheet.Shapes.AddShape _
        (msoShapeOval, 300, 100, 50, 50)

    'コネクタ描画 ※位置は仮決め
    Set ShapeCon = ActiveSheet.Shapes.AddConnector _
        (msoConnectorStraight, 1, 1, 1, 1)

    'コネクタを再接続
    With ShapeCon
        .ConnectorFormat.BeginConnect Shape1, 1
        .ConnectorFormat.EndConnect Shape2, 1
        .RerouteConnections
    End With

    ' テキストボックスを作成
    Set shapeEdit = ActiveSheet.Shapes.AddTextBox(msoTextOrientationHorizontal, 100 + 10, 100 - 10, 10, 10)
    shapeEdit.Select
    With Selection
        .Characters.Text = "x"
        .AutoSize = True
    End With

    ' グループ化
    ShapeCon.Select False
    shapeEdit.Select False
    Set shapeGroup = Selection.ShapeRange.Group
    Debug.Print " shapeGroup = " & shapeGroup.name

    If ShapeCon.ConnectorFormat.BeginConnected = msoTrue Then
        Debug.Print " line = " & ShapeCon.name & " begin connected = " & ShapeCon.ConnectorFormat.BeginConnected
        Debug.Print " line = " & ShapeCon.name & " begin site = " & ShapeCon.ConnectorFormat.BeginConnectionSite
        Debug.Print " line = " & ShapeCon.name & " begin shape = " & ShapeCon.ConnectorFormat.BeginConnectedShape.name
    End If
    If ShapeCon.ConnectorFormat.EndConnected = msoTrue Then
        Debug.Print " line = " & ShapeCon.name & " end connected = " & ShapeCon.ConnectorFormat.EndConnected
        Debug.Print " line = " & ShapeCon.name & " end site = " & ShapeCon.ConnectorFormat.EndConnectionSite
        Debug.Print " line = " & ShapeCon.name & " end shape = " & ShapeCon.ConnectorFormat.EndConnectedShape.name
    End If

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 学校とMOUGはマルチポスト許容ですが、サロンは禁止です。
 サロンに、レスがついていますが、サロンではなく、学校 ないしは MOUG で取り組まれるなら
 サロンのほうは、その旨、コメントして解決済みにされたほうがいいですね。

 また、サロンで取り組まれるなら 学校 と MOUG は クローズしておいたほうがいいですね。

(β) 2016/05/08(日) 12:16


なんとか、自力で解決に至りました。
マルチポストをご指摘いただいた方をはじめ、大変ご迷惑をおかけして申し訳ありありませんでした。
(佐藤) 2016/05/09(月) 15:51

 ここのような掲示板を使わせてもらった以上、一旦質問した以上、また、検索でここにたどり着いた
 人の為にも、自力解決した場合は、どのようにして解決したかを書くのが礼儀だと思う。
(マルチネス) 2016/05/09(月) 19:37

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.