LibreOffice Calc Basic - 用紙の向きを指定して印刷する方法

◆概要

 業務アプリケーションではよくあることですが、同じシートに横で印刷したい表と縦に印刷したい表が混在している場合があります。このとき、それぞれ用紙の向きを指定して印刷する必要があります。
 Excel VBAの場合は、PageSetupオブジェクトのOrientationプロパティにxlLandscapeを指定することで横向きに、xlPortraitを指定することで縦向きに印刷することができます。

サンプルコード(Excel)
Sub PrintLandscape()
    ActiveSheet.PageSetup.Orientation = xlLandscape '横
    ActiveSheet.PrintOut
End Sub

Sub PrintPortrait()
    ActiveSheet.PageSetup.Orientation = xlPortrait '縦
    ActiveSheet.PrintOut
End Sub

◆LibreOffice Basicで用紙の向きを指定する

 LibreOffice Basicでは、com.sun.star.viewインターフェースPaperOrientationプロパティを指定することで実現できます。
 次の例では、PaperFormatプロパティにA4を指定してA4用紙に印刷しています。 このマクロを実行する前に、印刷範囲が指定されたシートをアクティブにしておく必要があります。

サンプルコード(LibreOffice)
Sub printPORTRAIT
' ************************
' A4用紙を縦にして印刷する
' ************************
  Dim oDoc As Object
  Dim aPrintOption(0) As New com.sun.star.beans.PropertyValue
  Dim aPrinter(1) As New com.sun.star.beans.PropertyValue

  oDoc = ThisComponent
  aPrinter(0).Name = "PaperOrientation"
  aPrinter(0).Value = com.sun.star.view.PaperOrientation.PORTRAIT
  aPrinter(1).Name = "PaperFormat"
  aPrinter(1).Value = com.sun.star.view.PaperFormat.A4
  
  oDoc.setPrinter(aPrinter())
  oDoc.print(aPrintOption())
End Sub

Sub printLANDSCAPE
' ************************
' A4用紙を横にして印刷する
' ************************
  Dim oDoc As Object
  Dim aPrintOption(0) As New com.sun.star.beans.PropertyValue
  Dim aPrinter(1) As New com.sun.star.beans.PropertyValue

  oDoc = ThisComponent
  aPrinter(0).Name = "PaperOrientation"
  aPrinter(0).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
  aPrinter(1).Name = "PaperFormat"
  aPrinter(1).Value = com.sun.star.view.PaperFormat.A4
  
  oDoc.setPrinter(aPrinter())
  oDoc.print(aPrintOption())
End Sub

参考URL
OOoBasic/Calc/print

注意
 VBA入りのExcelをLibreOfficeに読み込み、odsファイルとして保存した場合、上記のマクロはエラーになります。純粋なというか、LibreOfficeで新規にドキュメントを作成してマクロを記述した場合は正しく動作します。

▼ページトップへ