よろずやネット

最近はLibreofficeにハマっています。

プリンター選択と印刷

前回、幸運にもバイブル的Andrew Pitonyakさんのドキュメントを発見。
33ページに印刷関連マクロの解説がある。
http://www.pitonyak.org/AndrewMacro.sxw

これをVB.NET風に書き換えてみる。


'*****プリンターの選択 ここから*****
Dim MyPrinter(0) As Object
'MakePropertyValueは以前作った関数
MyPrinter(0) = MakePropertyValue("Name", "ここにプリンター名を書く(String型)" )
oCalcDoc.Printer = mPrinter
'*****プリンターの選択 ここまで*****

次に印刷だが、何の指定もなく単純に全ページを印刷する方法は、

'*****印刷 ここから*****
Dim MyPrintopts1(0) As Object
MyPrintopts1(0) = MakePropertyValue( "" , "" )
oCalcDoc.Print(MyPrintopts1)
'*****印刷 ここまで*****

ページを指定して印刷は、次の通り。
例えば、1から3ページ、4ページは印刷せずに、5ページを印刷するには、

'*****印刷 ここから*****
Dim MyPrintopts2(0) As Object
MyPrintopts2(0) = MakePropertyValue( "Pages" , "1-3; 5" )
oCalcDoc.Print(MyPrintopts2)
'*****印刷 ここまで*****

ブックに含まれる全てのシート印刷するときには、
Dim oGSheetSettings As Object
oGSheetSettings = CreateUnoService( "com.sun.star.sheet.GlobalSheetSettings" )
oGSheetSettings.PrintAllSheets = True
'oGSheetSettings.PrintAllSheets = False     ' これはアクティブなページのみの印刷




前回、用紙サイズの設定をやったが、Andrewさんは別の方法を提示している。(34ページ)
しかし、これはそのままでは、VB.NETでは使用できない。
'oDoc.Printer.PaperFormat=com.sun.star.view.PaperFormat.LETTER
'(上記は用紙サイズをレターに設定)

http://api.openoffice.org/docs/common/ref/com/sun/star/view/PaperFormat.html
に、enum PaperFormatの解説があるが、使い方はわからない。

今のところ、用紙サイズ設定でうまく動作するのは、前回の方法のみである。