アプリケーションでの Visio Drawing Control の使用方法について

Visio には、ActiveX コントロール、Visio 図面コントロールが含まれています。

このコントロールを使用して、Visio 図面サーフェスのすべての機能をアプリケーションに埋め込むことができます。 完全な Visio オブジェクト モデル (API) を利用でき、公開する Visio ユーザー インターフェイスの側面を選択して、Visio をアプリケーションのユーザー インターフェイスにシームレスに統合することができます。

メモ Visual Basic 6.0、Visual C++ 6.0、Visual Studio、およびその他の ActiveX コントロール コンテナーに Visio Drawing Control を埋め込むことができます。 ただし、Visio 図面コントロールを別の Visio 図面、別の ActiveX コントロール、Visio のVisual Basic for Applications (VBA) フォーム、または Visio ソリューション ウィンドウに埋め込むことはできません。

はじめに

Visio Drawing Control をインストールするには、Visio をインストールします。 Visio をインストールするときには、[最小インストール] オプションなど、さまざまなインストール オプションを選択できます。 コンピューター上の Visio のインストール ファイル サイズを最小限に抑える場合は、[最小限の インストール] を選択できます。これは、Visio 図面アプリケーションや Visio 描画コントロールなど、必要最小限の Visio コンポーネントのみをインストールします。 このインストール オプションには、Visio ソリューションまたは Visio ヘルプ (オートメーション リファレンスとシェイプシート リファレンスが含まれます) は含まれません。

Visual Basic 6.0 の ツールボックス に Visio 図面コントロールを追加するには、[ プロジェクト ] メニューの [ コンポーネント] をクリックし、[ コントロール ] の一覧で [ Microsoft Visio 15.0 図面コントロール タイプ ライブラリ] を選択します。 他の開発環境でコントロールを使用できるようにするには、開発製品に付属するドキュメントを参照してください。

Visual Basic で Standard EXE プロジェクトを開き、コントロールを ツールボックスに追加したら、コントロールのアイコンをダブルクリックして、コントロールのインスタンスをアプリケーションのフォームに追加します。 コントロールのインスタンスは複数追加できますが、これらのインスタンスは同じ Visio Application オブジェクトを共有します。 その結果、コントロールの 1 つのインスタンスに関連するプログラム可能なオブジェクトおよび設定は、その他のインスタンスに反映されます。 たとえば、Application オブジェクトの Documents コレクションには、コントロールの各インスタンスに関連した Document オブジェクトが含まれます。

コントロール内で Visio 図面を開く

既定では、コントロールは空の Visio ドキュメント (図面) を開きます。 ただし、デザイン時または実行時に、コントロールが既存の Visio ドキュメントを読み込むかどうかを指定できます。 指定するドキュメントは、アプリケーションと共に指定するため、またはアクセス権を持つネットワーク共有、イントラネット サイト、または Web 上に存在するため、ユーザーが使用できる必要があります。 デザイン時にドキュメントを指定するには、Visual Basic プロジェクトの [プロパティ] ウィンドウで Src プロパティを設定します。 これが推奨される方法です。 実行時に図面を指定するには、通常は Form_Load() プロシージャで、コードで Src プロパティを設定します。 Visio 図面コントロールのカスタム プロパティの使用の詳細については、このトピックの後半と、このオートメーション リファレンスの Src プロパティ に関するトピックを参照してください。

Src プロパティを設定して、Visio Drawing Control にファイルを読み込むと、コントロールはファイルのコピーを開き、書き込みのために元のファイルを開いたままにすることはありません。 その結果、 Document.Save メソッドを使用して Visio Drawing Control に読み込まれたファイルに変更を保存することはできません。 ファイルに変更を保存するには、最初に Src プロパティを使用して、Visio Drawing Control にファイルを読み込み、 Src を空の文字列 ("") に設定します。 変更したファイルをディスクに保存するには、 Document.SaveAs メソッドを使用します。

Visio 図面コントロールに図面を読み込んだ後に SRC プロパティを空の文字列に設定しない場合、アプリケーションを閉じて再度開くたびに、元の図面が読み込まれ、自分またはユーザーが行った変更はすべて失われます。

既定では、コントロールには Visio の起動画面や起動時の [使用できるテンプレート] タブは表示されません。 さらに、既定では、コントロールは起動時にドッキングされたステンシル ウィンドウを表示しませんが、 Src プロパティを使用して、ドッキングされたステンシル ウィンドウが既に表示されている図面を指定すると、そのペインは Visio 図面コントロール ウィンドウに表示されます。 空の図面にステンシル ウィンドウを表示するには、Visio オブジェクト モデルの Document.OpenStencilWindow メソッドを使用します。

既定では、Visio メニューと Visio ツール バーはコントロールに表示されません (ただし、ショートカット メニューは使用できます)。 ただし、コントロールの NegotiateMenus プロパティおよび NegotiateToolbars プロパティを使用して、これらの項目を表示することができます。 Visio Drawing Control のカスタム プロパティを使用する方法の詳細については、このトピックの後半、およびこの『オートメーション リファレンス』の「NegotiateMenus プロパティ」および「NegotiateToolbars プロパティ」のトピックを参照してください。

メモ Microsoft Visio 2010 以降では、Office Fluent ユーザー インターフェイス (UI) によって、以前の階層化されたメニュー、ツール バー、作業ウィンドウのシステムが置き換えられます。 以前のバージョンの Visio でユーザー インターフェイスをカスタマイズするために使用した VBA オブジェクトとメンバーは、Visio 2013 で引き続き使用できますが、機能は異なります。

Visio Drawing Control の複数のインスタンスをアプリケーションに挿入できます。 ただし、コントロールの各インスタンスは、1 つの図面ウィンドウと 1 つのドキュメントのみを表示できます。

Visio のオブジェクト モデルにアクセスする

Visio のオブジェクト モデルにアクセスするには、Visio Drawing Control の Window プロパティまたは Document プロパティを使用します。 Visio の Window オブジェクトを取得するには、次のコードを使用します。

Dim vsoWindow As Visio.Window
Set vsoWindow = DrawingControl1.Window

Visio の Document オブジェクトを取得するには、次のコードを使用します。

Dim vsoDocument As Visio.Document
Set vsoDocument = DrawingControl1.Document

これらのオブジェクトのいずれかを取得したら、いずれかのオブジェクトの Application プロパティを使用して Visio Application オブジェクトを取得できます。

vsoWindow.Application
vsoDocument.Application

これらのオブジェクトを使用して、Visio のオブジェクト モデルのその他すべてにアクセスすることができます。 たとえば、グリッド、スクロールバー、ルーラー、およびページ タブのない Visio 図面サーフェスのみを表示するように、Visio ユーザー インターフェイスを変更する場合は、Form_Load() プロシージャで次のコードを使用します。

Dim vsoWindow As Visio.Window
Set vsoWindow = DrawingControl1.Window
vsoWindow.ShowGrid = False
vsoWindow.ShowPageTabs = False
vsoWindow.ShowRulers = False
vsoWindow.ShowScrollBars = False

キーボード イベント、マウス イベントなどの Visio イベントは、DrawingControl オブジェクトのメンバーとして直接利用できます。

Visio のオブジェクト モデルにアクセスすると、そのモデルの標準のオブジェクト、メソッド、プロパティ、イベントのすべてを使用して、プログラムのコントロールを自動化およびカスタマイズすることができます。 Visio のオブジェクト モデルのオブジェクトとメンバーを使用する方法の詳細については、この『オートメーション リファレンス』の特定のオブジェクトまたはメンバーのトピックを参照してください。

Visio Drawing Control は別のアプリケーションに埋め込んで使用するため、Visio の Visual Basic Editor は表示されません。 したがって、コントロールで開かれる既存の Visio 図面の Visual Basic for Applications (VBA) のマクロは実行されません。

また、Visio Drawing Control では、ユーザー インターフェイスに Visio のシェイプシートが表示されません。 ただし、オートメーションを使用して、シェイプシートのセルの値と数式を取得および設定することができます。

Visio Drawing Control のカスタム プロパティの使用方法

次の表に、Visio Drawing Control によって表示されるカスタム プロパティについて説明します。

プロパティ 説明
Document 読み取り専用です。 Visio 図面コントロールのインスタンスに関連付けられている Visio Document オブジェクトを返します。
HostID 値の取得と設定が可能です。 String 。 ホスト コンテナー アプリケーション (実行可能プログラム) を指定するレジストリ キーに割り当てられた GUID またはその他の文字列を返すか、設定します。 既定値は空の文字列です。
NegotiateMenus 値の取得と設定が可能です。 ブール値 です。 コントロールがメニューをホスト コンテナー アプリケーションのメニューと結合できるかどうかを指定します。 既定値は FALSE です。
NegotiateToolbars 読み取り/書き込みが可能です。 ブール値 です。 コントロールがツールバーをホスト コンテナー アプリケーションのものとマージできるかどうかを指定します。 既定値は False です。
PageSizingBehavior 値の取得と設定が可能です。 列挙型 VisPageSizingBehavior です。 既存の Visio 図面がコントロールのインスタンスに読み込まれるときに、ページのサイズ変更方法、図形のサイズ変更方法および配置方法を指定します。
Src 読み取り/書き込みが可能です。 String 。 実行時にコントロールのインスタンスに読み込まれる既存の Visio 図面のファイル名とこの図面へのパスを指定します。 既定値は空の文字列です。
Window 読み取り専用です。 Visio 図面コントロールのインスタンスに関連付けられている Visio Window オブジェクトを返します。 Window プロパティは、コントロールが埋め込みアクティブな場合のみアクセスできます。

これらのカスタム プロパティの詳細と、その使用方法を示すコード例については、この Automation リファレンスのこれらのプロパティに関連付けられている特定のトピックを参照してください。

Visio Drawing Control でのキーボード イベントとマウス イベントの使用方法

Visio 2003 以降、Visio オブジェクト モデルに追加された新しいキーボードイベントとマウス イベントにより、プログラムはコントロール内のユーザー キーボードとマウス入力に応答できるようになります。 たとえば、コントロールで特定の図形のマウス クリックを受信し、そのイベントを処理するコードを記述できます。 これらのイベントを使用して、ホスト アプリケーションで操作を行う方法については、このトピックの次のセクションを参照してください。

次の新しいイベントが利用できます。

  • KeyDown

  • KeyPress

  • KeyUp

  • MouseDown

  • MouseMove

  • MouseUp

これらのイベントには異なる引数を指定しますが、同様の名前を持つ Visual Basic のイベントと類似しています。 構文を表示するには、およびこれらのイベントの詳細については、この Automation リファレンスでそれらに関連付けられている特定のトピックを参照してください。 Visual Basic のイベントの詳細については、Visual Basic のヘルプを参照してください。

Visio Drawing Control をアプリケーションのユーザー インターフェイスと統合する

Visio 図面コントロールの図面を変更するには、ホスト アプリケーションでイベントまたは状態の変更を使用します。 また、Visio Drawing Control のイベントを使用して、ホスト アプリケーションで操作や変更を行うことができます。 たとえば、Visio Drawing Control のマウス イベントまたはキーボード イベントを使用して、ホスト アプリケーションにフォームやメッセージ ボックスなどのユーザー インターフェイス要素を表示できます。 次のコードは、Visio Drawing Control の MouseDown イベント (1 回のマウス クリック) を処理して、Visial Basic 6.0 アプリケーションにメッセージ ボックスを表示する方法を示しています。

Private Sub DrawingControl1_MouseDown(ByVal Button As Long, ByVal KeyButtonState As Long, ByVal x As Double, ByVal y As Double, CancelDefault As Boolean)
 
  MsgBox "You have clicked the mouse.", , "Drawing Control Event"
 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。