Libre basicで印刷ダイアログが表示されないのはなぜでしょうか

お世話になります。libreoffice basicにて印刷を試みた際に印刷確認ダイアログが出てきました。不要なので消すために以下のコードでパラメータを追加しました。

 ```

args(0).Name = “Selection”
args(0).Value = false ←trueでも
args(1).Name = “Collate”
args(1).Value =True ←falseでも

'oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'oDispatcher.executeDispatch(oDoc.getCurrentController().getFrame(), ".uno:Print", "", 0, args())

追加したパラメータの内"Selection"と"Collate"はそれぞれ印刷範囲と印刷順序を示すものです。なぜかこのパラメータがtrueだろうがfalseだろうが印刷ダイアログが非表示になり直接印刷されます。
使いたい挙動ではあるのですが何故bool値に関わらず非表示になるのでしょうか。

よろしくお願いいたします。

回答ではなくて本当に申し訳ないのですけど
私はOption VBASupport 1派なもので印刷に限らず
どうしてOOBasicをされているのかが判らないのです。

印刷ダイアログが不要とのことですけど
EXCEL VBAの場合
ActiveSheet.PrintOut
もしくは
WorkSheets(“Sheet1”).PrintOut
ととてもシンプルな話です。
OOBasicを知らないのでどうしてこんな
構文になっているのかも判らないのですけど
EXCEL VBAを踏襲したほうが
シンプルではないでしょうか?

args(0).Name="copies"
args(0).Value=1

でもダイアログが出なくなります。
パラメータを渡すと出なくなる仕様のような気がします

1 Like

もちろんvba support1が非常に便利なものであることは知っています。ただこのコードには致命的なバグがありプログラムにカギを掛けると無効化されるのです。そのためworksheet("")でシートを指定することもできないのです。
結構昔からこの問題に関する質問はask libreにあり未だに修正されていません。早く修復されることを祈るしかありません。

書いてない(もしくは見つけられてない)仕様なのですね。現在はそれで運用できますが明記されていない以上別の方向に変更されたときに苦労しそうです。検証ありがとうございます。

私の持っているソフトウェアに対する概念が異なる所為かも
知れませんけど鍵を掛けるシチュエーションが今ひとつ
理解できていません。

元来LibreOffice自身がそうであるようにオープンであることが
ソフトウェアの継続的保守を支援するものと私はイメージしています。

またVBAも本来自分自身の操作の繰り返しを自動化して
自分の生産性を上げる道具として捉えておりました。
ですから自分の為のものに鍵を必要としていません。

勿論他の方が使ってその生産性が上がるなら、それもまた
大いに結構ですけど、そこでどんな必要があると
鍵に繋がるのかのイメージが良くわからないです。

勿論著作権を否定するものではありませんけど、より最適な解は
常に可能性としてあって、それが改善されることを担保する為に
オープンであることは必要なことでは無いでしょうか?

パラメータを渡すと出なくなる仕様のような気がします

基本的にはそうです。
ただし、WriterはUI経由でもSelectionを足すことがあるので、共通処理で除外しているようです。

https://opengrok.libreoffice.org/xref/core/sfx2/source/view/viewprn.cxx?r=1f440348#647

https://opengrok.libreoffice.org/xref/core/sfx2/source/view/viewprn.cxx?r=1f440348#683

https://opengrok.libreoffice.org/xref/core/vcl/source/gdi/print3.cxx?r=364f0bb1#1828

https://opengrok.libreoffice.org/xref/core/vcl/source/gdi/print3.cxx?r=364f0bb1#507

2 Likes

使ってみてください:

".uno:PrintDefault"

2 Likes

お客様に渡す用にvbaを使っています。そのため勝手に編集されては困るためパスワードを使います。

ご提案ありがとうございます。この命令は確かにダイアログを消しますね。検証してみます。

詳細のご提示ありがとうございます。今の運用で問題なさそうですね

1 Like

Continuing the discussion from Libre basicで印刷ダイアログが表示されないのはなぜでしょうか:

編集されたら困るというのはサポートの事
だと思いますが、編集したらそこからは
自己責任という契約には出来ないのでしょうか?

理想論なのかもですが、
ソフトウェアって生き残る為には
未来の誰かに依存しても良いので
はないかと思います。

もし貴方が仮に急逝されたとしたら、
誰かにメンテナンスを依頼することも
出来ない状況というのは本当に妥当
なのでしょうか?

時代変化が仕様変更を余儀なくする事は
往々にしてあると思います。

何より、そのどっちにでもとれそうなものを
守る為に貴方は眼の前の果実を(VBA Support 1)
棄てているのがもったいないと思っています