こんにちは。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枚印刷されてしまいます。
いろいろ調べましたが理由が分かりません。
どなたかご教授お願いします。
すいません。上記の印刷設定のところを書き間違っていました。
PrinterProperties(0).Name = "Pages"
PrinterProperties(0).Value =2
↓
PrinterProperties(0).Name = "CopyCount"
PrinterProperties(0).Value =2
です。このコードで実行すると4部印刷されてしまいます。
よろしくお願いします
結局原因は分かりませんでしたが、印刷が終わるまでジョブを待機し、同じファイルを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
ありがとうございました。