VBA
またもやVBAをいじってます。
で、今日のメモ書きはVisioのシェイプをウィンドウ中央に表示する方法。
スーパーpre記法は便利だ…。
Sub ShapeScrollTest() ' windowオブジェクトのScrollViewToメソッドを使った処理 ' 選択したシェイプを中央に表示する Dim i As Integer Dim nShapes As Integer Dim subShape As Visio.Shape Dim objWindow As Window Dim dShapeX As Double Dim dShapeY As Double ' 選択したシェイプの情報取得 ' 選択しているシェイプの情報取得 nShapes = Application.ActiveWindow.Selection.Count ' 選択されていない、もしくは複数選択されている場合、エラーを表示 If (nShapes <> 1) Then MsgBox "1個のシェイプを選択して実行してください。", vbOKOnly + vbExclamation: End Set subShape = Application.ActiveWindow.Selection.Item(1) ' シェイプの座標を内部単位で習得 dShapeX = subShape.Cells("PinX").Result(visNumber) dShapeY = subShape.Cells("PinY").Result(visNumber) ' アクティブなウィンドウをオブジェクトに格納(不要かも) Set objWindow = Application.ActiveWindow ' ウィンドウを指定座標にスクロールする objWindow.ScrollViewTo dShapeX, dShapeY End Sub
シェイプの位置はシェイプシートのデータから引き出して、
それをScrollViewTo関数に突っ込むだけ。
注意点はシェイプシートからデータを取り出す時に内部データとして取り出す必要がある。
内部データとして取り出す際は、Resultの引数にvisNumberを指定する。