いいね!数

0

閲覧数
744

既存文書の一部ををコピーして別の文書を作成しようとしています。


    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument, doc2 As NotesDocument
    Dim item As NotesItem
    
'// 確認メッセージ
    RetVal = Messagebox ( "文書のコピーを作成します。よろしいですか?" ,1+32, "メッセージ" )
    If RetVal = 2 Then
        Exit Sub
    End If
    
    
    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.Document
    Set db = session.CurrentDatabase
    Set doc2 = New NotesDocument(db)
    
    
    doc2.form=doc.form(0)

    Set item = doc.GetFirstItem("Categories")
    Call item.CopyItemToDocument(doc2, "Categories")
    
    Set item = doc.GetFirstItem("Body")
    Call item.CopyItemToDocument( doc2, "Body") ←コピーした文書ではここでエラー

    Call doc2.RemoveItem( "$FILE" )


    Call workspace.editdocument(True, doc2,False )
    
    Set uidoc = workspace.CurrentDocument
    uidoc.Refresh    
    
以上のコードはうまくいくのですが、このスクリプトでコピーした文書をさらにコピーしようと

上記のスクリプトを実行すると、以下のエラーが出てしまいコピーができません。

「エラー:文書アイテムがみつかりません(Body)」

エラーなくコピーをつくるための方法がわかりません。

わかる方がいたら教えて頂けると助かります。

足りない情報等ありましたら、ご指摘ください。

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

補足:

このBobyフィールドは、計算結果フィールドになっており、以下のような配置になっています

Bodyフィールド(計算結果)

Body_inputフィールド(編集可能)

Body_inputフィールドに入力した内容をフォームのQueryCloseイベント時にBodyフィールドにアップしています。

これが今回のエラーに関係しているのかどうかはわかりません。
    
 

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - Notes アプリ | タグ:
  | 質問日時:2020/10/16 11:00:45

回答・コメント

いいね!数

0

Call doc2.RemoveItem( "$FILE" )

調べたところ、上記が問題となっているようでした。

コピーされた文書では$FILEがなくなっていて、しかし、空の添付ファイルのアイコンが残っています。

この状態でリッチテキストをコピーしようとすると、「エラー:文書アイテムがみつかりません(Body)」と

出てくるということがわかりました。

エラー文言の文書アイテムとは添付ファイルのことを指しているのだと思われます。

ユーザーはリッチテキストをコピーしたいけれど、添付ファイルは削除したいという要望です。

なんとか、コピーした文書をさらにコピーするときに、このエラーを回避する方法はないでしょうか?

回答日時:2020/10/16 11:35:09

いいね!数

0

リッチテキストフィールドに貼り付けた添付ファイルは、実体は$FILEだとしてもあくまでもリッチテキストフィールドの一部であり、リッチテキストフィールド側で削除処理を行わなければならないということなんだろうと思います。

Call item.CopyItemToDocument( doc2, "Body")

の後に

Dim RItem as NotesRichTextItem

Set RItem = doc2.GetFirstItem("Body")

というような感じでリッチテキストフィールドを取得し、EmbeddedObjectsプロパティで添付ファイルに対応するNotesEmbeddedObjectを取得(複数のNotesEmbeddedObjectがあった場合はどれが目的のものなのか判別も必要)、Removeメソッドで削除という流れになるのではないかと思います。

回答日時:2020/10/19 17:32:20