ページへシェイプを新規配置する

ページへシェイプを新規配置する


まとめ

Application.ActiveWindow.Page.Drop Application.Documents.Item("ステンシルファイル名(.VSS)").Masters.ItemU("マスターシェイプ名"), X座標, Y座標
で現在アクティブなページ上の指定した座標に任意のシェイプを生成できる。
  • 座標はX or Y = 1の時、Page上では25.4mmで計算される(1 : 25.4mm)。
  • 座標の0, 0の位置はページ上では左下スミになる。
  • 座標を指定した際、その座標と重なるのはシェイプの中心点。



前提知識

VBAを使用してページへシェイプを新規配置するにあたって必要な情報は、どのステンシルのどのマスターシェイプを使用するかという事だろう。
もちろん、ステンシルやらマスターシェイプが何の事かわからんという人はお話にならない。
そして、ここからはドロップという単語を普通に使わせてもらうので、それらの用語の意味もわからんという方はVisio VBA基礎知識を参照してほしい。


ステンシルとマスターシェイプの種類を把握する

どんなステンシルやマスターシェイプがあるか……というのはまとめている人がいるのでそれを参照するのが良い。
ステンシルやマスターシェイプはユーザーでも作成できるため、『こんなシェイプないかな?』と思ったら探してみると結構見つかったりする。中には機器メーカーが自社製品をVisioで取り扱うためにシェイプとして作成・公開していたりもする。

もちろん、お手持ちのVisioを起動して、ステンシルをチェックするのもアリだ。
実際、それがどんなシェイプかを調べるのに実物をチェックする以上の方法はない。

さて、どのようなマスターシェイプがあるのかわかったところで、VBAで取り扱えるように文字列としてステンシルとマスターシェイプを表現できるようになっておく必要がある。
このやり方を調べるのは比較的簡単だった。

以下はステンシルからマスターシェイプを選択し、ページ上へドロップする操作をマクロで記録したものだ。
Sub Macro1()

    Application.Windows.ItemEx("図面1").Activate
    Application.ActiveWindow.Page.Drop Application.Documents.Item("BASFLO_M.VSS").Masters.ItemU("Process"), 2.46063, 10.826772

End Sub

この時、"BASFLO_M.VSS"がステンシルを保存したステンシルファイル、"Process"が"BASFLO_M.VSS"に含まれるマスターシェイプを指している。
全部を把握するのは難しいが、これから使おうとしているマスターシェイプの調査程度なら、実際にそのマスターシェイプからインスタンスとしてのシェイプを生成し、それをマクロで記録すれば事足りるだろう。


シェイプの新規作成

以上が分かっていれば、というか、既に新規作成の手順は紹介し終えてしまっている。
先ほどのコードを再掲する。
Sub Macro1()

    Application.Windows.ItemEx("図面1").Activate
    Application.ActiveWindow.Page.Drop Application.Documents.Item("BASFLO_M.VSS").Masters.ItemU("Process"), 2.46063, 10.826772

End Sub

上記コードにおいて、
Application.ActiveWindow.Page.Drop
が命令(メソッド)部分になる。
すなわち『ドロップしなさい』という命令だ。
では何を『ドロップしなさい』と言っているかというと、
Application.Documents.Item("BASFLO_M.VSS").Masters.ItemU("Process") 2.46063, 10.826772
の部分がその対象に該当する。







以下更新中
最終更新:2013年05月23日 15:57