LibreOffice Calc Basic - 用紙の向きを指定して印刷する方法
◆概要
業務アプリケーションではよくあることですが、同じシートに横で印刷したい表と縦に印刷したい表が混在している場合があります。このとき、それぞれ用紙の向きを指定して印刷する必要があります。
Excel VBAの場合は、PageSetupオブジェクトのOrientationプロパティにxlLandscapeを指定することで横向きに、xlPortraitを指定することで縦向きに印刷することができます。
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用紙に印刷しています。
このマクロを実行する前に、印刷範囲が指定されたシートをアクティブにしておく必要があります。
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で新規にドキュメントを作成してマクロを記述した場合は正しく動作します。