Top > OOobbs > 38

OOobbs/38 Edit

  • サマリ: 現在表示されているシートのみを印刷する方法
  • 環境: Calc
  • 状態: 解決
  • 投稿者: suou?
  • 投稿日: 2004-11-01 (月) 19:32:52

質問 Edit

 oDoc.print(aPrintOption())のaPrintOption()でページ指定しないとそのドキュメントのすべてのページを印刷してしまうようです。これはoSheet.setPrintAreas(Array(aRange))で印刷範囲を指定しても同じことになりました。

 現在アクティブになっているシートのみを印刷したい場合、印刷プレビューで画面左下に表示されるページ番号を見て、印刷→印刷範囲でページ指定すれば、そのページのみを印刷できます。しかし、マクロであるシートのみを印刷したい場合は、シートカウントが同じであってもページ数はデータ量により変わってきます。このような場合、あるシートのページ番号を取得する方法はありますか?また、できれば、あるシートのみを印刷するPrintメソッドはあるのでしょうか?oSheet.print(aPrintOption())はエラーになってしまい途方にくれています。

回答 Edit

  • 現在表示されているシートのみを印刷するには,印刷ダイアログでのオプションにあるプロパティーを変更することで印刷できます。このプロパティーを OOoBasic から変更します。プロパティーは全てのシートを印刷するかどうかを指定する PrintAllSheets です。使うには GlobalSheetSettings のプロパティーを変更します。

例を次に示します。表示されているアクティブなシートのみが印刷されます。

Sub Main
Dim oDoc As Object
Dim oGSheetSettings As Object
Dim aPrintOption(0) As New com.sun.star.beans.PropertyValue
Dim aPrinter(0) As New com.sun.star.beans.PropertyValue
  
  oDoc = ThisComponent
  oGSheetSettings = CreateUnoService("com.sun.star.sheet.GlobalSheetSettings")
  oGSheetSettings.PrintAllSheets = false
  aPrinter(0).Name = "Name"
  aPrinter(0).Value = "いきなりPDF"
  oDoc.setPrinter(aPrinter())
  oDoc.print(aPrintOption())
End Sub

この GlobalSheetSettings はシートの設定の一般的な設定を扱うためのサービスです。このサービスにはドキュメント全般の設定以外のシートに特化した設定について取り扱います。一応,OOoBasic/Calc/settings をみて OOoBasic/Calc/obj/GlobalSheetSettings? を参考にしてもらえれば設定できると思います。

設定について全部紹介しておけばよかったですね。

  • はにゃ?? 2004-11-02 (火) 01:26:57
  • 早速試してみたところ旨くいきました。解決です。ありがとうございました。 -- suou? 2004-11-02 (火) 10:07:51


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