Top > OOoBasic > Writer > pagesettings
*ページ設定 [#rddb0016]
Writer のページ設定には全てページスタイルが使用されます。メニューの書式 -> ページ設定から設定した場合にはそのページに使用されているページスタイルが変更されます。

そこで,マクロからページ設定を変更する際にはページスタイルを取り扱います。

ページスタイルも一つのコンテナオブジェクトにまとめて管理されています。ページスタイルコンテナオブジェクトです。

#contents
**ページスタイルコンテナオブジェクト [#edb254bd]
ドキュメント中のページスタイル全てを管理している,ページスタイルコンテナオブジェクトはドキュメントオブジェクトのプロパティー ''StyleFamilies'' プロパティーから getByName("PageStyles") として ''getByName'' メソッドで取得します。

 Sub pagestylecontainer
 Dim oDoc As Object, oStyleFamilies As Object
 Dim oPageStyles As Object
   oDoc = ThisComponent
   oStyleFamilies = oDoc.StyleFamilies
   oPageStyles = oStyleFamilies.getByName("PageStyles")
 End Sub
***スタイル名 [#g9f0edf7]
ページスタイルコンテナオブジェクトにどのようなスタイルが含まれているか調べるには,''getElementNames'' メソッドを使います。

 Sub pagestylescontainer_elements
 Dim oDoc As Object, oStyleFamilies As Object
 Dim oPageStyles As Object
 Dim aStyleNames() As String
 Dim i As Integer
   oDoc = ThisComponent
   oStyleFamilies = oDoc.StyleFamilies
   oPageStyles = oStyleFamilies.getByName("PageStyles")
   aStyleNames() = oPageStyles.getElementNames()
   For i = 0 To UBound(aStyleNames())
     MsgBox aStyleNames(i)
   Next i
 End Sub

***スタイルの存在確認 [#zcc7cfd3]
ある名前のスタイルが存在するかどうかは ''hasByName'' メソッドを使います。
**ページスタイル [#n94446d7]
個別のページスタイルはページスタイルコンテナオブジェクトから取得します。これにはスタイル名を指定して取得します。


 Sub pagestyle
 Dim oDoc As Object, oStyleFamilies As Object
 Dim oPageStyles As Object, oPageStyle As Object
   oDoc = ThisComponent
   oStyleFamilies = oDoc.StyleFamilies
   oPageStyles = oStyleFamilies.getByName("PageStyles")
   oPageStyle = oPageStyles.getByName("Standard")
   MsgBox oPageStyle.Name
 End Sub

ここで取得したスタイル "Standard" はどのドキュメントにも始めは存在するスタイルです。

**ページを横向きにする [#k5160053]
ページを横向きにするのは分かりにくいですが、自分で縦と横のサイズを設定、さらにページの配置向きの設定を横にしてください。GUI で設定するような感じに向きを変えられません (IsLandscape を True に設定してもとくに幅と高さには影響しません)。


 With oPageStyle
   nTemp = oPageStyle.Width
   .Width = oPageStyle.Height
   .Height = nTemp
   .IsLandscape = True
 End With

** 背景画像の埋め込み [#t6dcdee2]
URL でのみ指定できるように見えますが次のようにして埋め込んだ画像を背景に設定できます。

 Sub EmbedImageIntoPageBackground
  sURL = "file:///home/asuka/Documents/images/logo.png"
  sName = "Logo"
  
  oDoc = ThisComponent
  oBitmapTable = oDoc.createInstance("com.sun.star.drawing.BitmapTable")
  If NOT oBitmapTable.hasByName(sName) Then
    oBitmapTable.insertByName(sName, sURL)
  End If
  
  sInternalURL = oBitmapTable.getByName(sName)
  
  oStyleFamilies = oDoc.getStyleFamilies()
  oStyleFamily = oStyleFamilies.getByName("PageStyles")
  oStyle = oStyleFamily.getByName("Standard")
  oStyle.BackGraphicURL = sInternalURL
 End Sub

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes