使用VBA在Lotus Notes中添加附件遇错误,求解决方案
解决Lotus Notes VBA插入附件的"Object doesn't support this property or method"错误
我来帮你搞定这个问题!你碰到的错误核心原因很明确:NotesUIDocument对象(也就是你代码里的NUIdoc)并不支持GetFirstItem方法——这个方法是属于后端的NotesDocument对象的,前端UI文档对象主要负责界面交互,没法直接操作文档字段和附件。
下面是具体的解决思路和修正后的代码:
关键修正点
- 从
NotesUIDocument获取对应的后端NotesDocument对象,这才是能操作文档内容的核心对象 - 用后端文档对象来获取或创建
$FILE富文本项 - 调用
EmbedObject完成附件嵌入
修正后的完整代码
Sub AttachFileToNotesDocument() Dim Anotesuiworkspace As Object Dim NUIdoc As Object Dim NotesDoc As Object ' 新增:后端NotesDocument对象 Dim rtitem As Object Dim FileName As String Const EMBED_ATTACHMENT As Integer = 1454 ' 定义嵌入附件的常量值 ' 创建Notes UI工作区并打开新文档 Set Anotesuiworkspace = CreateObject("Notes.NotesUIWorkspace") Set NUIdoc = Anotesuiworkspace.ComposeDocument("", "", "Dash 8 request") ' 从UI文档获取对应的后端文档对象 Set NotesDoc = NUIdoc.Document ' 设置要插入的文件路径 FileName = "C:\Users\k0600292\Desktop\Vacation Tracker\Andy Vacation.xlsx" ' 获取$FILE字段,如果不存在则新建富文本项 Set rtitem = NotesDoc.GetFirstItem("$FILE") If rtitem Is Nothing Then Set rtitem = NotesDoc.CreateRichTextItem("$FILE") End If ' 执行附件嵌入操作 rtitem.EmbedObject EMBED_ATTACHMENT, "", FileName ' 可选:自动保存文档(如果需要的话) NotesDoc.Save True, False End Sub
额外注意事项
- 确保
EMBED_ATTACHMENT常量已定义,值为1454,如果你的代码环境里没有这个常量,一定要加上代码里的Const定义行 - 如果你的表单
Dash 8 request中已经预先创建了$FILE富文本字段,那么GetFirstItem会直接获取到它;如果没有,代码会自动新建这个字段 - 如果你不需要自动保存,可以去掉最后的
NotesDoc.Save行,让用户手动保存文档
内容的提问来源于stack exchange,提问作者Ashley Ashok
相关产品推荐
相关产品推荐

