DrawPage 
Draw では Calc などのようにシートやセル,セル範囲といったものがなく,ドローページへのアクセスがほとんどです。
Draw ではさまざまな図形を描きますが,それらはシェープオブジェクトとしてドローページオブジェクトに属して存在します。そのため,Draw ドキュメントへのアクセスにはドローページへのアクセスが欠かせません。ドローページへのアクセスはドキュメントオブジェクトからドローページコンテナを通じて行います。
ドローページコンテナ 
ドローページオブジェクトはドローページコンテナオブジェクトに一つにまとめられて管理されています。このドローページコンテナオブジェクトはドキュメントオブジェクトの DrawPages プロパティーを使用して取得します。また,メソッドを使用するときには getDrawPages メソッドを使用します。このメソッドには引数はありません。
ドローページコンテナオブジェクトを取得する簡単な例を見てみます。
Sub drawpage_1
Dim oDoc As Object
Dim oDrawPages As Object
oDoc = ThisComponent
oDrawPages = oDoc.Drawpages
'oDrawPages = oDoc.getDrawPages
End Sub
ここでは oDrawPages 変数にドローページコンテナオブジェクトを取得しました。
ドローページ 
ドローページは上記のドローページコンテナから取得することになります。
取得する方法は二つです。
- ドローページの名前指定で取得
- ドローページのインデックスで取得
ドローページの名前で取得するときには,Draw のウィンドウの下側に表示されているページタブの名前を使用します。"Slid 1" といった名前です。
ドローページのインデックスで取得するときのインデックスは Draw ウィンドウの下側に並んでいるページタブの左から順に 0, 1, 2, ... の順になっています。インデックスの最初の番号は "0" から始まることに注意してください。
ドローページの名前で取得 
ドローページの名前で特定のドローページを取得するには,getByName メソッドを使用します。このメソッドは取得したいページ名を引数にとります。
Sub drawpage_2
Dim oDoc As Object
Dim oDrawPages As Object
Dim oDrawPage As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawPage = oDrawPages.getByName("Slide 1")
End Sub
また,取得したい名前のページがあるかどうかを調べるためのメソッドが hasByName メソッドです。このメソッドも存在するかどうか問い合わせるページ名を引数に指定します。
Sub drawpage_3
Dim oDoc As Object
Dim oDrawPages As Object
Dim oDrawPage As Object
Dim sPageName As String
sSlideName = "Slide 1"
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
If oDrawPages.hasByName(sPageName) Then
oDrawPage = oDrawPages.getByName(sPageName)
End If
End Sub
ドローページコンテナに含まれている全てのページ名を知りたいときには getElementNames メソッドを使用してページ名の配列として取得できます。
Sub drawpage_4
Dim oDoc As Object
Dim oDrawPages As Object
Dim aPageNames As String
Dim sPageName As String
Dim i As Integer
sSlideName = "Slide 1"
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
aPageNames = oDrawPages.getElementNames()
For i = 0 To UBoud(aPageNames)
MsgBox aPageNames(i)
Next i
End Sub
ドローページのインデックスで取得 
特定のドローページオブジェクトをインデックスで取得するには getByIndex メソッドを使用します。ドローページコンテナオブジェクト内で管理されているドローページのインデックスは "0" から始まります。
Sub drawpage_5
Dim oDoc As Object
Dim oDrawPages As Object
Dim oDrawPage As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawpage = oDrawPages.getByIndex(0)
End Sub
ここでは,インデックス "0" のドローページオブジェクトを取得しました。ドローページコンテナ内で,新しくページが作成されたりページが削除されると,インデックスは振りなおされます。そのため,インデックスが変更されるかもしれないことに注意しなければいけません。
ドローページコンテナにいくつのページが含まれているのかを調べるために getCount メソッドを使用します。
Sub drawpage_6
Dim oDoc As Object
Dim oDrawPages As Object
Dim oDrawPage As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
MsgBox oDrawPages.getCount()
End Sub
ドローページの取り扱い 
新規のドローページを追加したり,ドローページを削除するにはドローページコンテナオブジェクトに対して行います。
ドローページの新規作成 
ドローページを新しく追加するにはドローページコンテナオブジェクトの insertNewByIndex メソッドを使用して追加するインデックスを指定して行います。メソッドの引数は Long 型の整数値で新しく追加するドローページのインデックスを指定します。このとき,すでに存在するインデックスが指定されたときには他のインデックスのページのインデックスが変更されます。
Sub drawpage_7
Dim oDoc As Object
Dim oDrawPages As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawpages.insertNewByIndex(1)
End Sub
最後のインデックスに新しいドローページを挿入したいときには getCount メソッドですでに存在するドローページ数を調べます。
Sub drawpage_8
Dim oDoc As Object
Dim oDrawPages As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
MsgBox oDrawPages.getCount()
End Sub
ドローページの削除 
ドローページの削除にはドローページコンテナオブジェクトの remove メソッドを使用します。ここで,このメソッドには削除するドローページオブジェクトを引数として指定しなければいけません。そのため,ドローページを上記に従って取得しておきます。
Sub drawpage_9
Dim oDoc As Object
Dim oDrawPages As Object
Dim oDrawPage As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawPages.insertNewByIndex(1)
oDrawPage = oDrawPages.getByIndex(1)
oDrawPages.remove(oDrawPage)
End Sub
現在のページ 
現在表示中のスライドは CurrentController から取得します。
oController = ThisComponent.getCurrentController()
oPage = oController.CurrentPage
ページの複製 
ページをまるごと複製します。
Sub DuplicateDrawPage1
doc = ThisComponent
pages = doc.getDrawPages()
newpage = doc.duplicate(pages.getByIndex(0))
End Sub
複製されたページは元のページの次に挿入されます。