第 16 章 VISIO の DOCUMENT オブジェクト、PAGE オブジェクト、および SHAPE オブジェクトの使い方
このプログラムは、Document、Page、および Shape の各オブジェクトを使ってオブジェクト モデル内を移動し、図面を作成する方法を示したものです。この例では、既存の Visio オブジェクトを参照するのとは異なり、Visio® オブジェクトを作成しています。このプログラムは、以下の手順で処理を実行しています。
Sub HelloWorld () |
|
'Get the first page in the document associated with the VBA program.
'A new document always has one page, whose index in the Pages collection is 1.
Set pagsObj = ThisDocument.Pages
Set pagObj = pagsObj.Item(1)
'Get the stencil from the Documents collection and set the master.
Set stnObj = Documents.Add("基本シェイプ.vss")
Set mastObj = stnObj.Masters("長方形")
'Drop the rectangle in the middle of a US letter-size page.
Set shpObj = pagObj.Drop(mastObj, 100, 130)
'Set the text of the rectangle.
shpObj.Text = "Hello World!"
'Save the drawing. The message pauses the program so you know the drawing is finished.
ThisDocument.SaveAs "hello.vsd"
MsgBox "図面の作成が完了しました。", , "Hello World!"
End Sub
このプログラムは、以下のような図面を作成します。
Hello World プログラムで作成した図面
このプログラムでは、Visio タイプ ライブラリで定義された Visio.Document、Visio.Master、Visio.Pages、Visio.Page、および Visio.Shape などの Visio オブジェクト型を使用しています。一般的な Object 型の代わりに Visio オブジェクト型を使用することで、プログラムの処理速度が向上します。
このプログラムでは、オブジェクト変数を使用して Visio オブジェクトの参照を保持しています。各 Set ステートメントは、ThisDocument オブジェクトを始めとして、オブジェクト変数にオブジェクト参照を割り当てています。ThisDocument オブジェクトから、Pages コレクション、Page オブジェクトというように、取得と割り当てが順次行われています。
Set pagsObj = ThisDocument.Pages では ThisDocument オブジェクトが使用されています。このオブジェクトは VBA プロジェクトに関連付けられた特定の Document オブジェクトと同じです。つまり、VBA プロジェクトに関連付けられたファイルの Document オブジェクトを参照したい場合は、Documents コレクションから取得する必要はなく、ThisDocument オブジェクトを参照するだけです。
Set stnObj = Documents.Add("基本シェイプ.vss") は、Visio オブジェクト モデルで Documents の上位に位置するオブジェクトを参照していません。この Documents は、Visio グローバル オブジェクトのプロパティだからです。Visio グローバル オブジェクトのプロパティおよびメソッドは、オブジェクトへの参照を指定しなくても参照することができます。Visio グローバル オブジェクトの詳細については、「第 15 章 Visio での Microsoft VBA プログラミング」を参照してください。
Set shpObj = pagObj.Drop(mastObj, 100, 130) では、Drop メソッドを使って pagObj 変数で表されたページにマスタシェイプをドロップしています。プログラムで一から図形を作成することもできますが、マスタシェイプをドロップする方がはるかに簡単で一般的な方法です。引数 mastObj は、ドロップするマスタシェイプを示します。4.25, 5.5 は新規の図形の Pin (回転軸) のドロップ位置を示すページ座標です。これらの座標は、図面の単位がインチの図面ページの左下隅から計測した距離になります。Drop メソッドは、Shape オブジェクト (新しい長方形) への参照を返します。このオブジェクト参照は、変数 shpObj に割り当てられています。
shpObj.Text = "Hello World!" は、文字列 "Hello World!" を Shape オブジェクトの Text プロパティに割り当てています。これにより、Visio は、その文字列を長方形の中に表示します。これは、Visio の図面ウィンドウでポインタ ツールを使って図形を選択し、"Hello World!" と入力した場合と同じ処理です。
ThisDocument.SaveAs "hello.vsd" では SaveAs メソッドを使用し ThisDocument オブジェクトを Hello.vsd というファイル名で保存します。フォルダ パスの指定はなく、文書は作業中のフォルダ (通常はプログラムが入っているフォルダ) に保存されます。MsgBox ステートメントでは、図面作成の終了を知らせる簡単なメッセージを表示しています。メッセージ ボックスで [OK] をクリックすると、プログラムは終了します。
Visio のオブジェクト、プロパティ、メソッド、またはイベントの詳細については、Visio 製品付属のオンライン ヘルプ「開発者用リファレンス」([ヘルプ] メニューから [開発者用リファレンス] を選択) を参照してください。VBA プログラム作成の詳細については、Visual Basic エディタで Microsoft Visual Basic のオンライン ヘルプを参照してください。