OpenOfficeでVBから複数部印刷するには?

解決


ZOOO  2009-07-01 01:59:33  No: 101864

こんにちは。VB6.0からOpenOfficeのCalcを操作しています。
現在Calcを開いて、データを出力するところまでは出来ました。
最後に2部印刷してCalcを終了したいのですが、この'2部'という操作がうまくいきません。

'OpenOfficeサービスマネージャ
Dim oSM As Object
Set oSM = CreateObject("com.sun.star.ServiceManager")

'オープンオフィスデスクトップ
Dim oDesktop As Object
Set oDesktop = oSM.CreateInstance("com.sun.star.frame.Desktop")

'ファイルを開く
Dim args()
Set oCalcDoc = oDesktop.loadComponentFromURL("file:///C|/test.ods", "_blank", 0, args)

'シートのセット
Dim oSheet As Object
Set oSheet = oCalcDoc.getSheets().getByIndex(0)

            *** 出力操作 ****

'印刷
Set PrinterProperties(0) = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
PrinterProperties(0).Name = "Pages"
PrinterProperties(0).Value =2                      ←※部数設定
CallByName oCalcDoc, "print", VbMethod, PrinterProperties()

'Calcを閉じる
oCalcDoc.Close (False)    
oCalcDoc = Nothing

上記のコードを実行すると、なぜか4枚印刷されてしまいます。
因みにPrinterProperties(0).Valueの値を1にすると1枚、3にすると9枚印刷されてしまいます。
いろいろ調べましたが理由が分かりません。
どなたかご教授お願いします。


ZOOO  2009-07-01 02:03:58  No: 101865

すいません。上記の印刷設定のところを書き間違っていました。

PrinterProperties(0).Name = "Pages"
PrinterProperties(0).Value =2
            ↓
PrinterProperties(0).Name = "CopyCount"
PrinterProperties(0).Value =2

です。このコードで実行すると4部印刷されてしまいます。
よろしくお願いします


ZOOO  2009-07-02 20:52:34  No: 101866

結局原因は分かりませんでしたが、印刷が終わるまでジョブを待機し、同じファイルを2度続けて印刷することで回避しました。

'印刷
Dim PrinterProperties(0) As Object
Set PrinterProperties(0) = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
PrinterProperties(0).Name = "Wait"
PrinterProperties(0).Value =True                

'続けて2部印刷
CallByName oCalcDoc, "print", VbMethod, PrinterProperties()
CallByName oCalcDoc, "print", VbMethod, PrinterProperties()

'Calcを閉じる
oCalcDoc.Close (False)
Set oCalcDoc = Nothing

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加