LibreOffice Calc 保存ダイアログを表示しない方法

,

C#で文書を開く際にCalcを使用して表示させようとしています。
編集内容を保存していない状態で、×ボタンを押下した際に、編集を保存するかのダイアログが表示されますが、このダイアログを非表示にする方法はありますでしょうか?
Excelでは可能ですが、LibreOfficeのCalcでも同様の対応は可能でしょうか。

表示のために Libre Calc を使いたいということですよね?
少しでも編集が走ると、保存するかどうかのダイアログは出てしまう気がします。
もしくは、外部からKillする方法もありえます。その場合は、自動回復の機能を止められたかもしれません。
もう少し、やりたいことを具体的にお伝えいただければ、回答できる人が居るかもしれません。

1 Like

C#はわかりませんが、
Basicマクロなら他のファイルを
oDoc.dispose()ではなくて
oDoc.close(true)とすると保存ダイアログは出ません。

マクロのあるファイルを確認なしで閉じようとするマクロはうまくいきませんでした。

Ver.7.6ではクラッシュしたようになりましたが、現行バージョンでは大丈夫そう。
ファイルは閉じても、メモリ上にLibreOfficeが残っていたので
desktopをterminateするといいのかな~?

2 Likes

返信が遅くなりまして、申し訳ございません。
hidemune様、sabr()様ご回答ありがとうございます。

c#では、oDoc.close(true)は設定できませんでした。
外部からKillする方法やC#ではなくVBでする等、
色々な方法を模索して対応出来る様にしたいと思います。
対応が出来たら、又、ここに投稿したいと思います。

1 Like

libreoffice --calc --view <ODSファイル> でコマンドで開くと、読み取り専用で開けて保存ダイアログは出ませんね。
案としてひとつ追加です。

2 Likes

hidemune様
早速の案をありがとうございます。
今回は編集を行いたいので、読み取り専用で開くことは難しいのですが、
コマンドで開く方法もあるのが分かりましたので、更に色々と試してみたいと思います。
ありがとうございました!

https://wiki.documentfoundation.org/Documentation/DevGuide/Office_Development#Closing_Documents

上記サイトを参考に考えてみたのですが、

XModifiable XM = (XModifiable)XCo;
XM.setModified( False );

とすると編集がなかったものとして扱われるのではないでしょうか?

【外部から閉じる場合】
閉じるときにキーストローク「Ctrl-S」を外部から発行してやる。
【Libreで閉じるボタン】
閉じられるファイルにマクロを仕込んでおける??

「ツール」ー「カスタマイズ」ー「イベント」から、Libre全体のマクロを指定できそうです。

これをうまく使えば、保存ダイアログが出る前に保存などできそうな気もしています。(試せていませんが)

今さらですが、
私は変更を保存しないものだと思い込んでいました。

保存するなら

// save and close the spreadsheet
XModifiable XM = (XModifiable)XCo;
XM.setModified(true);
XStorable XSt = (XStorable)XCo;
XSt.store();
XCloseable XCl = (XCloseable)XCo;
XCl.close(true);
// terminate LibreOffice
// *** I want this to not terminate it if something else is open 
XDesktop XD = (XDesktop)XCL;
 if (XD != null) XD.terminate();

XSt.store();のところが上書き保存です

2 Likes