【入門編】Application.AddonsコレクションとVisioアドオンの連携:標準機能をVBAから呼び出して拡張する – Visio VBA解析バイブル

スポンサーリンク

Visio VBAの隠された「奥義」:Application.Addonsで標準機能を自在に操る

こんにちは。Visioの世界へようこそ。
もし君が今、「マクロの記録」ボタンを押して生成されたコードの羅列を眺めながら、「もっとスマートに、もっと深くVisioを制御したい」と願っているなら、今日は最高の扉を開く日になるはずだ。

Visioという巨大な城には、我々が普段のメニュー操作で使う「標準機能」たちが、ひっそりと隠し部屋に待機している。それが`Application.Addons`だ。これを知るだけで、君のVBAは「ただの自動化ツール」から「Visioエンジンの拡張」へと進化する。

1. 「Application.Addons」とは何者か?

VisioのVBAにおいて、`Application`オブジェクトは頂点に君臨する神のような存在だ。そして、その配下にある`Addons`コレクションは、Visioの「標準機能(コマンド)」をプログラムから呼び出すための窓口である。

普段、マウスでポチポチと操作している「整列」や「変換」といった処理。これらは内部的にアドオンとして実装されていることが多い。`Addons`を使うということは、このコマンドに対して直接「実行せよ」と命令を下すことに等しい。

なぜこれが重要なのか?

自分で複雑なアルゴリズム(例えば、高度な図形配置計算など)を一から書くのは骨が折れる。だが、Visioが既に持っている強力な計算エンジンを呼び出せば、一行のコードで魔法のような処理が可能になるからだ。

2. 実践:アドオンを呼び出す基本の「型」

まずは、一番よく使うパターンを覚えよう。`Addons.Item`で特定のコマンド名を取得し、`Run`メソッドで実行する。これだけだ。

Sub RunVisioAddon()
‘ Visioの標準機能「整列(Alignment)」を呼び出す例
‘ ※アドオン名は内部コマンド名で指定する必要がある
Dim myAddon As Visio.Addon

‘ “Align” という名前の標準アドオンを取得
Set myAddon = Application.Addons.Item(“Align”)

‘ 実行!
‘ これにより、標準の整列ダイアログが表示される、あるいは処理が走る
myAddon.Run “”
End Sub

【重要】ここで陥りやすい罠

  • 「名前」の正体: アドオン名はVisioのバージョンによって微妙に異なる場合がある。また、スペルミス一つで沈黙する。
  • 引数の渡し方: `Run`メソッドの引数は、基本的には文字列だ。コマンドに対して特定のパラメータを渡したい場合は、ここに設定を書き込む必要がある。

3. 現場で使える応用テクニック:図面整列の自動化

「マクロの記録」では上手く拾えない処理も、この手法なら解決できる場合がある。例えば、複雑な図形グループに対して、標準の整列機能を強制的に適用させるシチュエーションだ。

Sub AlignShapesProgrammatically()
‘ 選択されている図形に対して整列機能を適用する
Dim targetAddon As Visio.Addon

‘ エラーハンドリングはエンジニアの嗜み
On Error Resume Next
Set targetAddon = Application.Addons.Item(“Align”)
On Error GoTo 0

If Not targetAddon Is Nothing Then
‘ 引数に設定文字列を渡すことで、ダイアログを出さずに実行することも可能
‘ (※コマンドによって引数の仕様は異なるため、公式リファレンスと睨めっこが必要)
targetAddon.Run “/Align=Top”
Debug.Print “整列コマンドを実行しました。”
Else
MsgBox “対象のアドオンが見つかりません。”
End If
End Sub

4. 伝説のエンジニアからのアドバイス:ここを越えればプロだ

Visio VBAをマスターする上で、君に意識してほしいことが3つある。

1. 「マクロの記録」は答えではない、ヒントだ:
記録されたコードは冗長で、オブジェクトの参照が不適切であることが多い。記録したコードを参考にしつつ、`Addons`や`Cells`を使って、最短距離のコードに書き直す癖をつけよう。
2. オブジェクトの解放を忘れるな:
`Set myAddon = Nothing` を書くことは、メモリリークを防ぐだけではない。「自分のコードがどのリソースを占有しているか」を意識する、優秀なエンジニアの証だ。
3. エラーハンドリングを愛せ:
`On Error Resume Next` を多用するな。どこで失敗したのかを特定できるように、`Err.Number` をチェックする習慣を今すぐ身につけてほしい。

最後に

`Application.Addons`を掌握するということは、Visioの「中の人」と同じ視点でツールを開発するということだ。最初は難しく感じるかもしれないが、今日紹介したコードを一度動かしてみれば、君のVisioは「ただの作図ソフト」から「君専用の自動化マシン」へと変貌を遂げるはずだ。

次は、`VisEventProc`を使ったイベント駆動型プログラミングの話をしようか。あれを覚えると、君の作ったツールは「生き物」のように動き出す。

準備ができたら、またいつでも聞きに来てくれ。君の挑戦を応援しているよ。

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