You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lotus Notes邮件PDF附件丢失及代码修改报错问题求助

问题与解决方案:Lotus Notes邮件附件丢失及Error 438修复

问题背景

1. 初始问题:PDF附件复制后消失

修改网上获取的VBA代码生成带PDF附件的Lotus Notes邮件草稿,草稿中可见附件,但将草稿内容复制到正式邮件时,PDF附件消失且无报错提示。

原代码逻辑:创建临时NotesDocument,在其中单独添加Attachment富文本项存放附件,再创建Body项存放正文;复制时仅选中Body字段内容,导致附件未被复制到剪贴板。

2. 修改后触发Error 438

尝试在正式邮件创建阶段直接添加附件,修改代码后触发错误:

Object doesn't support this property or method (Error 438).

错误原因:NUIDocument(Notes前端UI文档对象)不支持CREATERICHTEXTITEM方法,该方法属于后端NotesDocument对象,而非前端UI操作对象。

解决方案

方案一:修复附件复制丢失问题(保留原复制粘贴逻辑)

将附件直接嵌入到Body富文本项中,确保复制时附件与正文一同被选中:

修改临时文档创建部分的代码:

With NDocumentTemp
    .Form = "Memo"
    
    '创建Body富文本项,同时存放附件和正文
    Set NRTItemBody = .CREATERICHTEXTITEM("Body")
    With NRTItemBody
        
        '--------- 嵌入附件到Body中 ---------
        If Attachment <> "" Then
            '直接在Body富文本中嵌入附件,而非单独的Attachment项
            Set EmbedObj = .EMBEDOBJECT(1454, "", Attachment, "Attachment")
            .ADDNEWLINE 2 '添加换行分隔附件与正文
        End If
        
        '编写邮件正文(原有代码保持不变)
        .APPENDTEXT "1st paragraph - default font."
        .ADDNEWLINE 2

        With NRTStyle
            .NOTESFONT = FONT_ROMAN
            .FontSize = 14
            .NOTESCOLOR = COLOR_BLUE
            .Bold = True
        End With
        .APPENDSTYLE NRTStyle
        .APPENDTEXT "2nd paragraph - Times New Roman Blue 14 Bold"
        .ADDNEWLINE 2
        
        '... 剩余正文代码保持不变
    End With
    
    .Save False, False
End With

方案二:直接在正式邮件中添加附件(修复Error 438)

通过NUIDocument.Document获取后端NotesDocument对象,再执行附件嵌入操作:

修改正式邮件创建部分的代码:

With NUIDocument
    .FIELDSETTEXT "EnterSendTo", SendTo
    .FIELDSETTEXT "EnterCopyTo", CopyTo
    .FIELDSETTEXT "BlindCopyTo", BlindCopyTo
    .FIELDSETTEXT "Subject", Subject
    
    If Attachment <> "" Then
        '获取后端NotesDocument对象
        Dim doc As Object
        Set doc = .Document
        
        '获取或创建Body富文本项
        Dim bodyRT As Object
        Set bodyRT = doc.GetFirstItem("Body")
        If bodyRT Is Nothing Then
            Set bodyRT = doc.CREATERICHTEXTITEM("Body")
        End If
        
        '在Body中嵌入附件
        Set EmbedObj = bodyRT.EMBEDOBJECT(1454, "", Attachment, "Attachment")
    End If
    
    .GOTOFIELD "Body"
    .Paste
    
    .DOCUMENT.SaveOptions = "1"
    .DOCUMENT.MailOptions = "1"
    
    .Close
End With

关键说明:

  • NUIDocument仅负责前端界面操作,所有文档结构修改需通过后端NotesDocument对象执行;
  • 优先获取已存在的Body项,避免重复创建导致的异常。

内容的提问来源于stack exchange,提问作者AlessioFranzini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:17:55