2015-06-13 104 views
0

我在lotusscript代理程序中刪除了附件從NotesDocuments中的以下代碼。但NotesDocument.save()會導致富文本格式(字體,顏色)丟失。有什麼方法可以保留格式嗎?NotesDocument.save()導致富文本格式丟失

Sub removeAttachments_v2(doc As NotesDocument) 
    Dim session As NotesSession 
    Dim rtitem As Variant 
    Dim filename As String 
    Dim ans As Variant 

    Set session = New NotesSession 
    Dim richstyle As NotesRichTextStyle 
    Set richstyle = session.CreateRichTextStyle 
    richstyle.NotesColor = COLOR_BLUE 

    If doc.HasEmbedded Then 
     Set rtitem = doc.getfirstitem("Body") 
     If (rtitem.type = RICHTEXT) Then 
      ForAll object In rtitem.EmbeddedObjects 
       If (object.Type = EMBED_ATTACHMENT) Then 
        filename = object.source 
        Call object.remove 
        Call rtitem.AddNewLine(2) 
        Call rtitem.AppendStyle(richstyle) 
        Call rtitem.AppendText("Attachemnt removed: " & filename) 
        Call doc.Save(True, True , True) 
       End If 
      End ForAll 
     End If 
    End If 
End sub 

EDIT1:初始化函數

Sub Initialize 
    Dim db As New NotesDatabase("","") 
    Dim col As NotesDocumentCollection 
    Dim doc As NotesDocument 

    Call db.Open("", "C:\this\is\db\dir\test.nsf") 
    Set col = db.Alldocuments 

    Set doc = col.Getfirstdocument() 
    While Not (doc Is Nothing) 
     Call RemoveAttachments_v2(doc) 
     Call doc.Save(False, False, False) 
     Set doc = col.GetNextDocument(doc) 
    Wend 
End Sub 
+0

您對NotesSesion.ConvertMIME屬性的設置是什麼? –

+0

NotesSession.ConverMIME爲True – PrashantB

回答

0

儘管事實,即在保存文檔的每個附件我找不到任何理由,爲什麼發生這種情況。我只是複製你的代碼的代理,並刪除附件根據需要並追加在藍色的文字...

無格式丟失......

誤差必須在別的地方在你的代碼,可能在調用函數中。

OLD ANSWER(錯因自己的測試,這裏只是不停地爲歷史):

這裏的問題很可能是:你定義rtitem爲Variant。並且 getfirstitem獲取NotesItem而不是NotesRichtextItem,因此在保存時會將其轉換爲「純文本」項目。

很可能您使用Variant而不是NotesRichtextItem,因爲 存在MIME郵件,其中將變量定義爲NotesRichtextItem 將導致「Type Missmatch」或類似錯誤。只要你不要 寫回任何東西就行了。

爲MIME郵件需要完全不同的處理,以實現自己的目標, 你應該先使用 正確類型的修爲純NotesRichtextItems的代碼,然後再另寫代碼 - 分公司辦理Mime- 項目

+0

他正在檢查項目類型,如果它不返回爲type = RICHTEXT,他不保存。所以我不認爲它把它當作純文本項目。 –

+0

對不起,你是對的... –

+0

@TorstenLink你可能是真的,但我仍然面臨這個問題。我只能在運行此代理後才能收到純文本電子郵件,否則郵件將爲RT。 – PrashantB