ステンシルを開いてマスタシェイプを図に描く方法

ステンシル&マスタシェイプのアイキャッチ VBA

ステンシルを図に描く方法教えて~

ステンシル?ドラックして配置すれば良いのかな?

Visioといえば便利なのがステンシルですよね?ボタン1つで特定のステンシルをまとめて配置できたら良いな♪という場面もあるかと思います。ということで今回はステンシルをVBAで呼び出す方法をご紹介します。

ステンシル&マスタシェイプについて前置き

このページにたどり着いたということは、ステンシルはご存じだと思いますが一応ご紹介しますね。

Visioは図形やシンボル、設計図のパーツなんかをステンシルというシートに保存しておくことができます。こちらのスクショでは左側にある赤いシートが「ステンシル」です。こちら実態は~~.vssxというファイルになっています。

そして、ステンシルに保存してある図などをマスタシェイプと言います。シートに入っている1個1個の図がマスタシェイプです。ページにドラックすることで配置することができます。

まずはステンシルを開く方法

マスタシェイプをドックする前にステンシルを開くよ!

ステンシルを開かないでマスタシェイプをドラックしようとすると、「無効なドキュメント~」とエラーが出てしまうのでまずは開きます。

構文

ステンシルを開く構文はこちら。

Documents.OpenEx “ステンシルのファイル名.vssx”, フラグ
※フラグは省略不可

ステンシルのファイル名について

ステンシルのファイル名ですが、海月のPCでは以下のパスに保存されていました。どこ?と言う方はこの辺りを探してみて下さい。

Program Files (x86)\Microsoft Office\root\Office16\Visio Content\1041

インストール時に既に入っているステンシル達です。バージョンやそれぞれの設定によっては違うかもしれませんし、自作のステンシルは保存場所が指定できます。

こちらはフォルダ内のスクショです。ファイルを選択するとタイトルなどが出てくるので、使いたいステンシルを見つけて下さいね。

フラグについて

構文の中にあるフラグですがこんな感じです。

定数オプション
visOpenCopy&H1指定したステンシルのコピーを開く
visOpenRO&H2読み取り専用で開く
visOpenDocked&H4ドッキングされたウインドウで開く
visOpenDontList&H8最近開いたドキュメントに表示させない
visOpenMinimized&H10ステンシルを最小化して開く
visOpenRW&H20書き込み可で開く
visOpenHidden&H40ステンシルを非表示で開く
visOpenMacrosDisabled&H80マクロ無効で開く
visOpenNoWorkspace&H100ワークスペース情報なしで開く

何じゃこりゃ・・・?!

聞きなれないけどよく使うのはvisOpenDockedかな?

マスタシェイプを配置したいだけならvisOpenRO+visOpenDockedでOKです。

visOpenDockedにするとここに開きます。いつもここに開く人が多いのでは?!

そうでないと別ウィンドウで開きます。

マスタシェイプを図に描く(ドラック)する方法

構文

マスタシェイプやシェイプをドラックする構文はこちら。マウスでドラックしたのと同じになります。

Page. Drop (Item(“ステンシルファイル名.vssx”).Masters.ItemU(“マスタシェイプ名”), xPosyPos)
xPosyPosは指定しない限り単位はインチ

Sample

コード

Sub test1()

'ステンシルを開きます
Application.Documents.OpenEx "WEBMAP_M.vssx", visOpenRO + visOpenDocked
'マスタシェイプをページにドラックします
Application.ActiveWindow.Page.Drop Application.Documents.Item("WEBMAP_M.vssx").Masters.ItemU("Search"), 3.88731, 3.267716

End Sub

ステンシルを開いて、HTML(地球儀マーク)をドラックします。

実行結果

無事マスタシェイプをドラックすることができたと思います。

その他もろもろ気になる点は他の記事で書こうと思います!

ここまで読んできて気になることがあったと思います。

例えば、

ステンシルのファイル名をインストールフォルダから探すのは非効率的だよね・・・

VBAでステンシルにマスタシェイプを登録することはできないの?

などなど当然気になるところも多いですが、長くなってしまいそうなので別の記事で書こうと思いま~す。

タイトルとURLをコピーしました