前回までは、Calc(カルク)のセルの操作までやってきた。
今回は、用紙サイズとマージン(余白)の設定だ。
今回は、用紙サイズとマージン(余白)の設定だ。
Calc(カルク)のマクロ自動記録で「ページの設定」を記録すると、
dim document as object
dim dispatcher as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )
dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )
dispatcher.executeDispatch(document, ".uno:PageFormatDialog", "", 0, Array())
となって、ダイアログのウインドウを表示するマクロしか記録されない。
しかしもー、オープンオフィスの自動マクロ記録は、なんでいつもDispatchHelperが出てくるんだ!?
DispatchHelperを使用したマクロだと、知りたいと思うことが何もわからない。
しかしもー、オープンオフィスの自動マクロ記録は、なんでいつもDispatchHelperが出てくるんだ!?
DispatchHelperを使用したマクロだと、知りたいと思うことが何もわからない。
エクセルの自動マクロ記録を使用すると、ちゃんとメソッドとかプロパティが出てきて、ヒントをたくさん得られるのに、オープンオフィスの自動マクロ記録は、あまりにも不親切ではないか。
それとも、オープンオフィスは「シロウトがマクロを書く」ということをあまり想定していないのだろか。
オフィスとの互換性があるというものの、「ユーザーが自分でマクロを書く」という事に関しては、マイクロソフトオフィスに軍配が上がる。断言!
それとも、オープンオフィスは「シロウトがマクロを書く」ということをあまり想定していないのだろか。
オフィスとの互換性があるというものの、「ユーザーが自分でマクロを書く」という事に関しては、マイクロソフトオフィスに軍配が上がる。断言!
Andrew Douglas PitonyakさんのRe: [api-dev] Page size and Page format というメールメッセージを発見。
これを開いてみると、メールの下部に、http://www.pitonyak.org/AndrewMacro.sxw
というマクロに関するドキュメントのURLが書かれている。
いいぞ!
早速ダウンロードしてみる。
これを開いてみると、メールの下部に、http://www.pitonyak.org/AndrewMacro.sxw
というマクロに関するドキュメントのURLが書かれている。
いいぞ!
早速ダウンロードしてみる。
このドキュメントは英語で、タイトルは、
Useful Macro Information For OpenOffice By Andrew Pitonyak
(アンドリュー・ピトニャックさんの有用なオープンオフィスマクロ情報)<--勝手な意訳
Useful Macro Information For OpenOffice By Andrew Pitonyak
(アンドリュー・ピトニャックさんの有用なオープンオフィスマクロ情報)<--勝手な意訳
これは、522ページにも及ぶオープンオフィスマクロの解説書だ。(残念ながらVB.NETとの絡みはない)
いい感じ!今後、私のバイブルになりそうなドキュメントである。アンドリューさん、ありがとう。私の師匠!
(しかし、英語だから読むのには、また、集中力の全員召集をせねばならぬ)
いい感じ!今後、私のバイブルになりそうなドキュメントである。アンドリューさん、ありがとう。私の師匠!
(しかし、英語だから読むのには、また、集中力の全員召集をせねばならぬ)
このドキュメントの52ページに、ペーパーマージンの項目を発見!
流れとしては、ページスタイルを取得し、その中のプロパティを設定するという感じだ。
検索結果のリンクをたどっていくと、あったあった、あったぞ。
http://api.openoffice.org/docs/common/ref/com/sun/star/style/PageProperties.html
http://api.openoffice.org/docs/common/ref/com/sun/star/style/PageProperties.html
ページスタイルの中のページプロパティには、ものすごい数のプロパティが存在するではないか!
ペーパーサイズや余白のプロパティはごく一部分なのだ。
早速、VB.NET風に書き換えてみる。
ペーパーサイズや余白のプロパティはごく一部分なのだ。
早速、VB.NET風に書き換えてみる。
Dim oStyleFamilies As Object
Dim oPageStyles As Object
Dim oPageStyle As Object
Dim oPageStyles As Object
Dim oPageStyle As Object
oStyleFamilies = oCalcDoc.getStyleFamilies()
oPageStyles = oStyleFamilies.getByName( "PageStyles" )
oPageStyle = oPageStyles.getByName( "Default" )
oPageStyles = oStyleFamilies.getByName( "PageStyles" )
oPageStyle = oPageStyles.getByName( "Default" )
With oPageStyle
.Width=21000 '用紙幅210mm つまりA4
.Height=29700 '用紙高(長)297mm つまりA4
.LeftMargin=2000 '左側の余白20mm
.RightMargin=2000 '右側の余白20mm
.TopMargin=2000 '上の余白20mm
.BottomMargin=2000 '下の余白20mm
End With
.Width=21000 '用紙幅210mm つまりA4
.Height=29700 '用紙高(長)297mm つまりA4
.LeftMargin=2000 '左側の余白20mm
.RightMargin=2000 '右側の余白20mm
.TopMargin=2000 '上の余白20mm
.BottomMargin=2000 '下の余白20mm
End With
ランしてみる。エラーなし、結果OK!
ちなみに、APIサイトによると、上記設定値はLong型の整数である。
ちなみに、APIサイトによると、上記設定値はLong型の整数である。
前述したが、ページプロパティはものすごい数があるので、一つ一つ試していたら、膨大な時間がかかりそうである。
シロウトの私としては、上記6つのプロパティで、とりあえず満足なので、次のステップに進むのだ。
シロウトの私としては、上記6つのプロパティで、とりあえず満足なので、次のステップに進むのだ。