Visio® ファイルには複数のページを格納することができます。ファイルの各ページに固有の図面を格納し、一部のページを他のページの背景として使用することができます。
複数ページのファイルをプログラムから作成するには、ページをファイルに追加して、それらのページに背景を割り当てます。図面縮尺、およびページの幅と高さなどのページの設定を変更することもできます。
このセクションの内容...
複数の図面に図形を同じ配置で表示したい場合は、その図形を背景ページに配置します。たとえば、プログラムを使用して複数のページで図面を作成する場合は、ヘッダー図形とフッター図形、または表題欄図形と枠図形を使用して背景ページを作成します。
複数の前景ページに同じ背景ページを割り当てることができます。前景ページに割り当てることができる背景ページは、1 ページだけですが、背景ページに別の背景ページを割り当てることができます。このため、背景ページが複数含まれた図面を作成することも可能です。背景ページを作成するには、ページを図面に追加し、そのページの Background プロパティを True に設定します。例を次に示します。
backPagObj.Background = True
背景ページを別のページに割り当てて、そのページが表示されるときに背景の図形が図面ウィンドウに表示されるようにするには、前景ページの BackPage プロパティを背景ページの名前に設定します。例を次に示します。
pagObj.BackPage = "フロアプラン"
Pages コレクションの項目は、[ページの並び替え] ダイアログ ボックスに表示される順番で前景ページにインデックスが付けられ、その後に任意の順番で背景ページが並びます。[ページの並び替え] ダイアログ ボックスを表示するには、図面ウィンドウの任意のページ タブをクリックして、[ページの並び替え] を選択します。
次の例では、アクティブなファイルの Pages コレクション内で反復処理を実行し、ユーザー フォーム上のリスト ボックスにすべての前景ページの名前を表示しています。
Sub IteratePages ()
Dim pagsObj As Visio.Pages
Dim pagObj As Visio.Page
Set pagsObj = ThisDocument.Pages
UserForm1.ListBox1.Clear
For Each pagObj In pagsObj
If pagObj.Background = False Then
UserForm1.ListBox1.AddItem pagObj.Name
End If
Next
UserForm1.Show
End Sub
ステンシルに各マスタシェイプのインスタンスが含まれた複数ページの図面を作成したいものとします。この場合、formValid プロシージャを使用して、背景ページを作成し、そのページ縮尺とページ サイズを、レポートに表示されるマスタシェイプの縮尺に合わせて設定します。
このプロシージャは、マスタシェイプと背景ページの縮尺をそれぞれのページ シートから取得します。グローバル変数 gDocDraw は、縮尺設定のない、新しい図面にあらかじめ設定されています。
Sub formValid ()
'Declarations and unrelated statements have been omitted.
'Assume all masters have same scale
Set master = masters(1)
Set masterSheet = master.Shapes("ThePage")
'Page setup for background page.
Set gPageBack = gDocDraw.Pages.Item(1)
gPageBack.Name = STR_BACKGROUND
gPageBack.Background = True
'Set page scale and size for background page.
Set pageSheet = gPageBack.Shapes("ThePage")
masterDrawingScale = masterSheet.Cells("DrawingScale").Formula
masterPageScale = masterSheet.Cells("PageScale").Formula
pageDrawingScale = pageSheet.Cells("DrawingScale").Formula
pagePageScale = pageSheet.Cells("PageScale").Formula
'After retrieving the scales of the master and the page, formValid compares
'the master's scales with those of the page. If either of the scales differ-
'as it would for a stencil of architectural shapes, for example-it changes
'the page scale to the master's scale. It also converts the page's height
'and width from unscaled to scaled values (pageHeight * drawingScale / pageScale).
If (masterDrawingScale <> pageDrawingScale Or masterPageScale <> pagePageScale) Then
'Drawing Scale = Custom
pageSheet.Cells("DrawingScaleType").Formula = 3
pageSheet.Cells("DrawingScale").Formula = masterDrawingScale
pageSheet.Cells("PageScale").Formula = masterPageScale
'Drawing Size = Dimensions
drawingScale = masterSheet.Cells("DrawingScale")
pageScale = masterSheet.Cells("PageScale")
pageHeight = pageSheet.Cells("PageHeight")
pageWidth = pageSheet.Cells("PageWidth")
pageSheet.Cells("PageHeight").Formula = pageHeight * drawingScale / pageScale
pageSheet.Cells("PageWidth").Formula = pageWidth * drawingScale / pageScale
End If
End Sub
Microsoft Visual Basic for Applications (VBA) プログラムでは、通常、Visio テンプレートを使用して図面を作成します。テンプレートを使用すると、プログラムによって作成される図面に正しい設定が行われるので、図面縮尺やページ縮尺などの設定を変更する必要はありません。これらの設定を変更する必要がある場合、またはテンプレートを使用しないで図面を作成するときに Visio のデフォルトを使用したくない場合は、ページ数式を変更することで、ページ設定を変更することができます。
ページ数式を変更するには、Page オブジェクトの PageSheet プロパティを取得します。このプロパティはページの数式を表す Shape オブジェクトを返します。次に、この Shape オブジェクトの Cells プロパティを使用し、図面ページ上の図形に関するセルを取得する場合と同じように、名前によってページ セルを取得します。
Master オブジェクトにも PageSheet プロパティがあり、このプロパティを使用して、ページの場合と同じようにマスタシェイプの図面縮尺およびページ縮尺などの設定を取得できます。たとえば、マスタシェイプを図面ページ上にドロップする前に、マスタシェイプの縮尺が図面ページに対して適切であるかどうかを確認するために、これらの設定を取得することができます。
注 Page オブジェクトまたは Master オブジェクトの Shapes コレクションから、ThePage という特別な図形を取得してページ設定にアクセスすることもできます。これは、Page オブジェクトまたは Master オブジェクトの PageSheet プロパティを取得するのと同じ操作を実行します。
たとえば、ユーザーが Visio エンジンからではなく作成したプログラムから空間設計の縮尺を変更できるようにするにするとします。次のステートメントでは、図面の 1 m が図面ページの 2 cm に相当するように、pagObj の縮尺を設定しています。
Set pagSheetObj = pagObj.PageSheet
Set pagCelPageScale = pagSheetObj.Cells("PageScale")
Set pagCelDrawScale = pagSheetObj.Cells("DrawingScale")
pagCelPageScale.Result("cm") = 2
pagCelDrawScale.Result("m") = 1
最も使用する可能性の高いページ セルは、図面のサイズおよび縮尺を制御するページ セルです。その他のページ セルは、ルーラーおよびグリッドの精度、ページに対して定義されているレイヤー、アクション、およびユーザー定義セルを制御します。ページ セクションおよびページ セルの一覧については、「付録 B シェイプシートのセクション、行、セル インデックス」を参照してください。