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

求助:Lotus Notes VBA宏无法复制信纸邮件正文到新邮件

我来帮你搞定这个Lotus Notes VBA宏的问题!你已经能完成文件附加,但卡在了信纸正文复制这一步——核心原因是Lotus Notes的邮件正文属于NotesRichTextItem富文本类型,不能像普通文本那样直接赋值,得用专门的富文本复制方法来处理。

我帮你调整了代码,补上了正文复制的关键逻辑,你可以直接参考:

Sub CreateNewNotesMailWithStationery()
    Dim ns As Object
    Dim db As Object
    Dim origStationeryDoc As Object ' 存储原信纸邮件文档
    Dim newMailDoc As Object ' 存储新建的邮件文档
    Dim origBodyRT As Object ' 原信纸的富文本正文项
    Dim newBodyRT As Object ' 新邮件的富文本正文项
    Dim targetFilePath As String
    Dim isFileAttached As Boolean
    
    isFileAttached = False
    Application.ScreenUpdating = False
    
    ' 初始化Lotus Notes会话
    Set ns = CreateObject("Notes.NotesSession")
    Set db = ns.CurrentDatabase
    
    ' --- 替换成你获取信纸邮件的逻辑 ---
    ' 示例:通过视图+主题查找信纸,你可以改成按文档ID/模板库获取
    Dim targetView As Object
    Set targetView = db.GetView("($Inbox)") ' 信纸所在的视图
    Set origStationeryDoc = targetView.GetDocumentByKey("你的信纸主题", True) ' 替换为你的信纸主题
    
    If Not origStationeryDoc Is Nothing Then
        ' 创建新邮件文档
        Set newMailDoc = db.CreateDocument
        newMailDoc.Form = "Memo"
        newMailDoc.Subject = "你的新邮件主题" ' 设置新邮件主题
        
        ' --- 核心:复制信纸的富文本正文 ---
        Set origBodyRT = origStationeryDoc.GetFirstItem("Body")
        If Not origBodyRT Is Nothing Then
            ' 在新邮件中创建正文富文本项
            Set newBodyRT = newMailDoc.CreateRichTextItem("Body")
            ' 复制原信纸的正文内容(保留格式)
            Call newBodyRT.AppendRTItem(origBodyRT)
        End If
        
        ' --- 保留你的文件附加逻辑 ---
        targetFilePath = "C:\你的文件路径\example.pdf" ' 替换为你的目标文件路径
        If Dir(targetFilePath) <> "" Then
            Call newBodyRT.EmbedObject(1454, "", targetFilePath, "Attachment")
            isFileAttached = True
        End If
        
        ' 打开新邮件窗口
        newMailDoc.Open(True)
    Else
        MsgBox "未找到指定的信纸邮件,请检查主题或视图路径!"
    End If
    
    ' 清理对象
    Application.ScreenUpdating = True
    Set ns = Nothing
    Set db = Nothing
    Set origStationeryDoc = Nothing
    Set newMailDoc = Nothing
    Set origBodyRT = Nothing
    Set newBodyRT = Nothing
End Sub

关键细节说明:

  • 富文本处理逻辑:必须用AppendRTItem方法复制富文本内容,直接赋值newMailDoc.Body = origStationeryDoc.Body会丢失格式甚至失效。
  • 信纸获取逻辑:示例用了视图+主题查找信纸,你可以根据实际场景替换(比如从专用模板库获取、通过文档唯一ID定位)。
  • 文件附加时机:要在创建新的富文本正文项后执行附加操作,确保文件嵌入到正确的正文区域。

如果你的原有代码中已经有获取信纸的逻辑,只需要把正文复制的那段核心代码嵌入进去就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:26:03