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
相关产品推荐
相关产品推荐

