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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:48