选择Word文档的内容,并将其粘贴到Outlook的身体与VBA

问题描述 投票:1回答:1

我有一个Word模板创建,我需要做到以下几点:

  1. 创建基于模板的新文档
  2. 修改新模板的一些数据,并复制它的所有内容
  3. 打开Outlook和模板粘贴到邮件正文
  4. 将消息发送到相应的收件人

注:基本模板将根据他们的数据被用于多个收件人。基本上,它是几乎相同的功能,这个词对应标签满足,仅定制。此外,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

如果有人能帮助我,我将非常感激。

excel vba outlook ms-word outlook-vba
1个回答
2
投票

你几乎得到了它,尽量显示你粘贴之前。还看到我所做的变化不大

下面我举例我使用wdFormatOriginalFormatting保持Word文档和签名的格式

    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
© www.soinside.com 2019 - 2024. All rights reserved.