excel - 选择 Word 文档的内容并使用 VBA 将其粘贴到 Outlook 的正文中

标签 excel vba outlook ms-word

我创建了一个 Word 模板,我需要执行以下操作:

  • 根据该模板创建一个新文档
  • 修改新模板的部分数据,复制所有内容
  • 打开 Outlook 并将模板粘贴到邮件正文中
  • 将消息发送给相应的收件人

  • 注意:基本模板将根据其数据用于多个收件人。基本上,它与 Word 对应选项卡实现的功能几乎相同,只是自定义。此外,VBA 代码在 Excel 工作表中,因为有收件人。

    这是我拥有的代码,一切正常,直到您到达应该在 Outlook 邮件正文中粘贴内容的行,因为这不会粘贴内容,实际上粘贴不起作用。
    Sub EnviarRespuestas()
        Dim editor, OutApp, Correo As Object
        Dim i, j, celda As Integer
        Dim pag1 As Worksheet
        Set pag1 = ActiveWorkbook.Worksheets("send messages")
        wArch = "path of the template"
        celda = 11
    
    'create Document of template
        Set objWord = CreateObject("Word.Application")
        objWord.Visible = True
        objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0
    
    'Modify document with data of Excel
        For k = 6 To 8
            With objWord.Selection.Find
                .Text = Sheet1.Range("A" & k).Text
                .Replacement.Text = Sheet1.Range("C" & k).Text
                .Execute Replace:=2
            End With
        Next k
    
        objWord.Activate
    
    'Copy content of the template modify
        objWord.Selection.WholeStory
        objWord.Selection.End = objWord.Selection.End - 1
        objWord.Selection.Copy
    
    'validate if exists recipients in sheets of excel
        Do While Not pag1.Range("J" & celda).Value = ""
            Set Correo = OutApp.CreateItem(0)
            With Correo
                .To = pag1.Range("J" & celda).Value
                .Subject = "CURSO: " & pag1.Range("C6").Text
    
        'try of paste content in body 
                .BodyFormat = olFormatRichText
                Set editor = .GetInspector.WordEditor
                editor.Content.Paste
    
                .Display
    
                celda = celda + 1
            End With
        Loop
    End Sub
    

    如果有人可以帮助我,我将不胜感激。

    最佳答案

    你几乎明白了,在粘贴之前尝试显示。另请参阅我所做的小改动

    下面的示例我正在使用 wdFormatOriginalFormatting保留word doc和签名的格式

        Dim Correo As Object
        Set Correo = OutApp.CreateItem(0)
        Set objWord = Correo.GetInspector.WordEditor
    
        With Correo
            .To = pag1.Range("J" & celda).Value
            .Subject = "CURSO: " & pag1.Range("C6").Text
    
            .Display 'here
             objWord.Paragraphs(1).Range. _
                    PasteAndFormat Type:=wdFormatOriginalFormatting
    
        End With
    

    关于excel - 选择 Word 文档的内容并使用 VBA 将其粘贴到 Outlook 的正文中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54583761/

    相关文章:

    php - 如何在laravel 5中存储excel表格中的图像

    c++ - Hook Outlook,权限问题

    c# - 从托管代码调用 Folder.PropertyAccessor 是否安全?

    c# - 使用 C# 在其他人的 outlook 日历中创建约会

    Excel VBA : Cannot use command on overlapping selections

    excel - Excel 能否将 CSV 中的 URL 解释为超链接?

    VBA-下拉导航到工作表/工作簿

    asp.net-mvc - jqgrid + EF + MVC : Is it possible to export in excel, 始终使用相同的 Controller 操作?

    ms-access - Access VBA 能否区分在组合框中键入内容和从下拉列表中选择之间的区别?

    excel - 保存工作簿的 "backup copy"而不提交对 Excel 的更改?