Top > OOobbs3 > 48

OOobbs3/48 Edit

  • サマリ: 新規ドキュメント作成時にフッターにページ数と総ページ数を設定したい
  • 環境: Calc
  • 状態: 解決
  • 投稿者: shin?
  • 投稿日: 2011-03-08 (火) 12:57:19

質問 Edit

はじめまして。こちらで勉強させていただいています初心者です。 現在、CSV読込タイプの帳票作成をOpenOfficeマクロで挑戦しています。CSV読込後、指定のフォーマットに貼り付けし、新規ドキュメント作成し、ページスタイルの設定まで成功しましたが、フッター部中央にページ数と総ページを入れるところで詰まっています。 こちらのサイトでpagesettingsなど参考にやってみましたが思うようにうまくいきません。 私が思っている結果としては、【メニューバー】-【書式】-【ページ】-【フッター】-【編集】のフッターのコンボボックスにあるページ1/?が設定できればと思っています。帳票作成後に行追加の可能性があるため、総ページ数が特定できないので、このような結果になれればと思っています。 フッターの設定方法についてご助言を頂けたら、非常に助かります。宜しくお願い致します。

回答 Edit

  • 次のような感じにします。

利用するページスタイルの RightPageFooterContent から中央のテキストを getCenterText メソッドで取得して編集します。テキストの編集方法は Writer のテキストや Calc のセルのテキストの編集と同じです。 ページ番号とページ総数はフィールドを利用します。

Sub SetFooter
 oDoc = ThisComponent
 ' スタイルを取得
 oStyleFamilies = oDoc.StyleFamilies
 oStyles = oStyleFamilies.getByName("PageStyles")
 oStyle = oStyles.getByName("Default")
 
 With oStyle
   .FooterIsOn = True
 End With
 ' 左右共通の場合は右ページ用が利用される
 oFooterContent = oStyle.RightPageFooterContent
 ' 中央のテキスト
 oCenterText = oFooterContent.getCenterText()
 
 oCenterText.setString("")
 
 ' ページ番号フィールド
 oNumberField = oDoc.createInstance("com.sun.star.text.textfield.PageNumber")
 ' ページ総数フィールド
 oCountField = oDoc.createInstance("com.sun.star.text.textfield.PageCount")
 
 ' テキストカーソルで順に挿入
 oCursor = oCenterText.createTextCursor()
 With oCursor
   .gotoStart(False)
   oCenterText.insertTextContent(oCursor, oNumberField, False)
   oCenterText.insertString(oCursor, " / ", False)
   oCenterText.insertTextContent(oCursor, oCountField, False)
 End With
 
 ' 設定を反映
 oStyle.RightPageFooterContent = oFooterContent
End Sub

テキストカーソルでの編集は慣れると見て編集するカーソルと同じようにできることが分かると思います。

  • はにゃ? 2011-03-08 (火) 17:56:03
  • はにゃ? さん 回答ありがとうございました。思っていた動きの回答で非常に助かりました。どうもありがとうございました。 -- shin 2011-03-08 (火) 18:55:17

感想,コメント,メモ Edit



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