Visioを「最強の閲覧専用モニター」に変える:UI完全制御の極意
こんにちは。現場の自動化を極めるエンジニアです。
Visioといえば図面作成ツールですが、実は「動的な情報を表示する最強のダッシュボード」としてのポテンシャルを秘めていることをご存知でしょうか。工場の生産管理画面や、オフィスの状況モニターとしてVisioを「全画面表示(キオスクモード)」で運用したいという要望は、現場の自動化を志すエンジニアにとって一つの通過儀礼です。
今回は、VisioのUIをVBAで完全に支配し、閲覧専用の「美しい盤面」を作り上げる手法を伝授します。
—
1. Visioオブジェクトモデルの地図を把握する
VBAでUIを制御する際、まず理解すべきはVisioの「階層構造」です。
- Application: Visioというアプリそのもの(頂点)
- Window: 画面上の表示領域(リボン、スクロールバー、ステータスバーなど)
- Document/Page: ファイルと図面ページ
- Shape: 図面上に配置されたオブジェクト
今回私たちが操作するのは、主に `Application.ActiveWindow` です。ここを制御することで、Visioの外観を自由自在に操ることができます。
—
2. 実装コード:キオスクモードへの変身
以下のコードは、Visioを「閲覧専用」にするための魔法の呪文です。標準モジュールに貼り付けて実行してみてください。
‘ Visioをキオスクモード(全画面表示)にするための制御コード
Public Sub EnableKioskMode()
Dim win As Visio.Window
Set win = Application.ActiveWindow
‘ 1. リボンやステータスバーを隠して没入感を高める
‘ ShowNavigationPane: ページ一覧を表示するかどうか
‘ ShowStatusBar: 下部のステータスバーを隠す
‘ ShowRulers: ルーラー(定規)を隠す
With win
.ShowNavigationPane = False
.ShowStatusBar = False
.ShowRulers = False
.ShowGrid = False
.ShowGuides = False
‘ 2. フルスクリーン表示を実行
‘ Application.FullScreen = True にするとリボンも消えます
Application.FullScreen = True
End With
MsgBox “キオスクモードを起動しました。Escキーで解除可能です。”
End Sub
‘ 元に戻すためのコード
Public Sub DisableKioskMode()
Application.FullScreen = False
With Application.ActiveWindow
.ShowNavigationPane = True
.ShowStatusBar = True
.ShowRulers = True
End With
End Sub
なぜこのコードが重要なのか?
「マクロの記録」では、こうしたウィンドウ設定の詳細までは記録されません。`Application`レベルと`Window`レベルのプロパティを理解して初めて、ユーザーに「これはツールではなく、一つのシステムだ」と錯覚させるような、クリーンなUIを提供できるのです。
—
3. 陥りやすい罠と「プロの知見」
初心者の方が必ずと言っていいほど直面するのが、「エラー発生時にUIが戻らなくなる」という問題です。キオスクモード中にエラーでVBAが停止すると、メニューが消えたままになり、操作不能になります。
対策:エラーハンドリングの徹底
必ず `On Error GoTo` を活用し、どのような状況でもUIを復旧させる出口を用意してください。
Public Sub SafeKioskMode()
On Error GoTo ErrorHandler
‘ 処理を実行
Application.FullScreen = True
‘ …
Exit Sub
ErrorHandler:
‘ 万が一の時もUIを戻す
Application.FullScreen = False
MsgBox “予期せぬエラーが発生しましたが、UIを正常な状態に戻しました。”
End Sub
—
4. さらなる高みへ:CommandBarsの制御
さらに高度な制御を行いたい場合、かつては `CommandBars` を使用してメニューバーを直接操作していましたが、近年のVisio(リボンUI)では `Application.ShowToolbar` や `FullScreen` プロパティを組み合わせるのが王道です。
もし「特定のボタンだけを残したい」といった高度な制御が必要な場合は、XML(CustomUI)を用いたリボンカスタマイズが必要になります。しかし、まずは上記コードで「表示領域を最大化する」という基本を完璧にマスターしましょう。
—
最後に:先輩からのアドバイス
Visio VBAは、単に「図を書く」ための道具ではありません。「情報を可視化し、現場の状況をリアルタイムに伝えるインターフェース」を構築するための最強のエンジンです。
UIを隠すことで、ユーザーの注意力を「図面そのもの」に向けさせることができます。これこそが、業務自動化エンジニアが追求すべき「体験設計」です。
ここをクリアできれば、次はデータ連携(ExcelやSQL Serverからのリアルタイム更新)に挑戦してみてください。あなたのVisioは、ただの図面ツールから、現場になくてはならない「指揮統制パネル」へと進化するはずです。
何か詰まったら、いつでも戻ってきてください。また次のステップでお会いしましょう。
