【入門編】Document.SaveAsWeb機能をVBAから完全制御:Webブラウザ閲覧用インタラクティブHTMLダイアグラムの一括自動出力 – Visio VBA解析バイブル

スポンサーリンク

Visio VBAの深淵へ:Webエクスポートをコードで完全制御する

こんにちは。業務自動化の世界へようこそ。
「マクロの記録」ボタンを押して生成された、冗長で意味不明なコードに頭を抱えたことはありませんか?今日からそのステージを卒業しましょう。

今回は、Visioの隠れた強力機能「SaveAsWeb(Webとして保存)」をVBAで自在に操る技術を伝授します。単にファイルを保存するだけでなく、パン・ズーム機能や検索ボックスを完備した「インタラクティブな図面」を一括で自動生成する。この領域をマスターすれば、あなたの業務効率は劇的に変わります。

1. Visioオブジェクトモデルの「階層構造」を理解する

コードを書く前に、Visioがどう世界を見ているかを知る必要があります。Visioは「入れ子構造」の塊です。

  • Application: Visioそのもの(神の視点)
  • Document: 開いているファイル(図面ファイル)
  • Page: ファイルの中の各ページ(キャンバス)
  • Shape: ページ上に置かれた図形(最小単位)

今回の目標である「Web保存」は、`Document`オブジェクトが持つ機能です。これを呼び出すためには、まず今開いているドキュメントを特定する、という順序になります。

2. SaveAsWebを制御する「VISWEB_CREATE_DOC_MESSAGES」の正体

実は、VBAから「Webとして保存」を制御するには、標準の `SaveAs` メソッドではなく、`VisSaveAsWeb` という専用のアドオンオブジェクトを利用します。

ここが初学者の最初の壁ですが、恐れることはありません。「設定」と「実行」の2ステップで考えると非常にシンプルです。

実践コード:一括Web出力エンジン

以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。

Sub ExportToWebInteractive()
‘ Webエクスポートを司るオブジェクトを生成
Dim vsoSaveAsWeb As Object
Set vsoSaveAsWeb = Application.Addons(“SaveAsWeb”)

‘ Web保存用オブジェクトの操作(WebSettings)
Dim vsoWebSettings As Object
Set vsoWebSettings = vsoSaveAsWeb.WebSettings

‘ 出力設定のカスタマイズ
With vsoWebSettings
.LongFileNames = True ‘ 長いファイル名を許可
.StoreInFolder = True ‘ 専用フォルダを作成
.OpenInBrowser = False ‘ 出力後に自動でブラウザを開かない
.QuietMode = True ‘ 途中のダイアログを表示しない(自動化の肝)
.IncludeZoomControl = True ‘ ズーム・パン機能の付与
.IncludeSearch = True ‘ 検索機能の有効化
.TargetFolder = “C:\Output\VisioWeb\” ‘ 出力先パス
End With

‘ 実行(現在のドキュメントを対象にする)
‘ ※必ず事前に対象のドキュメントを保存しておくこと
vsoSaveAsWeb.CreatePage vsoWebSettings

MsgBox “Webエクスポートが完了しました!”, vbInformation
End Sub

3. ここで躓くな!プロが教える「陥りやすい罠」

このコードを動かす際に、多くの人がハマるポイントがあります。

① 未保存ファイル問題

VisioのWeb出力エンジンは、ファイルが一度も保存されていない(パスが確定していない)状態だとエラーを吐くことがあります。必ず `ActiveDocument.Path` が存在する状態で実行してください。

② アドオンの存在確認

`Application.Addons(“SaveAsWeb”)` は、Visioの標準インストール構成に依存します。もしエラーが出る場合は、[ファイル] > [オプション] > [アドイン] で「Visio Save as Web」が有効になっているか確認してください。

③ 出力先のパス問題

`TargetFolder` に指定するパスは、必ず最後にバックスラッシュ(\)を付けてください。また、フォルダが存在しないとエラーになるため、事前に `MkDir` 関数でフォルダを作成するロジックを挟むのが「現場の作法」です。

4. 次のステージへ:一括変換の自動化

もしあなたが「フォルダ内にある全Visioファイルを一気にWeb化したい」と思ったら、`FileSystemObject` を使ってフォルダ内のファイルをループ処理します。

‘ ヒント:Dir関数やFSO(FileSystemObject)と組み合わせることで
‘ 夜間に100個のファイルを自動でWeb変換する、といったタスクが可能です。

最後に:自動化は「道具」ではなく「思考」

VBAを使いこなすということは、単に便利なコードを書くことではありません。「自分が行っていた退屈なクリック操作を、Visioのオブジェクトモデルに翻訳する」という思考法を身につけることです。

今回の `SaveAsWeb` の制御は、Web共有が当たり前の今の時代の必須スキルです。ぜひ、あなたの図面を「静止画」から「誰もが検索・拡大できるインタラクティブな資産」へと進化させてみてください。

また何か壁にぶつかったら、いつでもここへ戻ってきてください。あなたの自動化の旅を、私はいつでも応援しています。

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