Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 选择Word文档的内容,并使用VBA将其粘贴到Outlook的正文中_Excel_Vba_Outlook_Ms Word - Fatal编程技术网

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

Excel 选择Word文档的内容,并使用VBA将其粘贴到Outlook的正文中,excel,vba,outlook,ms-word,Excel,Vba,Outlook,Ms Word,我创建了Word模板,需要执行以下操作: 基于该模板创建新文档 修改新模板的某些数据并复制其所有内容 打开Outlook并将模板粘贴到邮件正文中 将邮件发送给相应的收件人 注意:基本模板将根据其数据用于多个收件人。基本上,它与“文字对应”选项卡实现的功能几乎相同,只是自定义的。此外,VBA代码位于excel工作表中,因为存在收件人 这是我的代码,一切都很好,直到你到达一行,你应该在Outlook邮件的正文中粘贴内容,因为这不会粘贴内容,实际上粘贴不起作用 Sub EnviarRespuestas

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

  • 基于该模板创建新文档
  • 修改新模板的某些数据并复制其所有内容
  • 打开Outlook并将模板粘贴到邮件正文中
  • 将邮件发送给相应的收件人
  • 注意:基本模板将根据其数据用于多个收件人。基本上,它与“文字对应”选项卡实现的功能几乎相同,只是自定义的。此外,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
    
    如果有人能帮助我,我将不胜感激。

    您差一点就拿到了,请在粘贴之前先显示一下。也看到了我做的一些小改变

    下面的示例是我用来保持word文档和签名格式的


    非常感谢您的帮助,如果我在发送邮件之前先显示邮件会有所帮助,但我需要直接发送邮件而不显示邮件。如果你能继续帮助我,那将是一个巨大的帮助和快乐。否则,我必须先显示,然后发送,这会导致Outlook消息界面显示片刻,然后关闭。带有“此处显示”的对应词。段落(1)。范围。\uPasteAndFormat类型:=wdFormatOriginalFormatting。发送结束于
        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