使用.body = ActiveDocument。仅拉入Word文档的一部分

时间:2017-07-26 13:01:52

标签: vba ms-word word-vba outlook-vba

正如您从代码中看到的那样(与Word 2016文档中的命令按钮绑定)我现在有了命令按钮:

  1. 启动/显示电子邮件
  2. 将所有文档内容添加到电子邮件正文中(通过.Body = ActiveDocument.Content)
  3. 附加Word文档
  4. 问题:有没有办法只将部分文档内容拉入正文?基本上,我有一份表格,由员工填写。在表单之后(下面),有一些关于如何填写表单,一些定义和其他管理信息的说明,我宁愿不将其放入电子邮件正文中。

    当前代码:

    Dim OL   As Object
    Dim EmailItem   As Object
    Dim Doc   As Object
    
    Application.ScreenUpdating = False
    
    Set OL = CreateObject("Outlook.Application")
    Set EmailItem = OL.CreateItem(olMailItem)
    Set Doc = ActiveDocument
    
    Doc.Save
    
    With EmailItem
        .Subject = "test subject line"
        .Body = ActiveDocument.Content
        .To = "myemail@email.com"
        .Importance = olImportanceNormal
        .Attachments.Add Doc.FullName
        .Display
    End With
    
    Application.ScreenUpdating = True
    
    Set Doc = Nothing
    Set OL = Nothing
    Set EmailItem = Nothing
    

1 个答案:

答案 0 :(得分:0)

.Body属性包含一个字符串。 ActiveDocument.Content是一个包含整个文档的字符串。从技术上讲,文档的任何较小部分也是字符串。因此,您可以选择文档的任何部分并将其分配给.Body属性。 此链接可帮助您选择要包含在电子邮件中的文档部分。 VBA to copy text from excel to on specific location in wordfile 要使用的代码是

Dim Rng As Range
Dim Excerpt As String

' Find the range with guidance from the above link
Excerpt = Rng.Text
EmailItem.Body = Excerpt