Categories: IBM Lotus Notes

【Lotus Script】NotesUIDocumentにて、保存ダイアログを表示しないで文書を閉じる方法

さて、宣言通りLotus Scriptに関して投稿しようかと思います。

まずは簡単なTips程度のレベルで。

Lotus Scriptでワークスペース上のNotes文書を色々弄る際、NotesUIDocumentクラスをベースに使うと思います。
んでもって、併せてNotesDocumentクラスで文書を取得して色々弄ったりして、様々な処理を実現させたりするかと。

文書を色々弄って保存するぞー!という時に、NotesUIDocumentクラスからCloseメソッドを実施すると…

保存ダイアログが一々出てきます。ウザいですね。
NotesUIDocumentクラス側でSaveメソッドを使えば普通は出てこない筈なんですが、なんだかんだで出てくる時があります。もしくは自分のやり方がいけないのかもしれへん…

また、入力処理をさせたいだけであって、該当の文書は保存する必要の無いフォーム上でこいつが出てくると面倒臭いですね。
他にも、NotesDocument側で保存処理をしないといけない場合(競合の関係上、普通はUI側で保存処理をする。)も出てきます。当たり前だけど。

その場合は、該当文書のSaveOptionsを0にしてしまえば、このダイアログは出てきません。

ただ、SaveOptionsを0にした後に保存をしてしまうと、次編集した際に保存ダイアログが出なくなって、出ないといけない場面で出なくなるので、注意が必要。

下記のような感じで実装すればOKです。

Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

'なんらかの文書処理

'保存処理
Call doc.save(True, True)
doc.SaveOptions = "0"
Call uidoc.Close(True)

至ってシンプル。
NotesDocument側で保存をした後、これまたNotesDocument側でSaveOptionsに”0”を入れる。
この後UI側を閉じると、保存ダイアログが出ません。

どうしてもNotesDocument側で保存しなきゃいけない(文書リンクやら添付ファイルやらを適用する関連)処理の場合、非常に役に立つ。
LotusScriptってどうしてもこのへんが面倒臭いんですよね。慣れると面白いんですけど。

L.SMK

小さい頃からネットの海を泳ぎ続けている。仕事は社内SE。趣味は音ゲーとIT関連の情報収集。