将String插入收到的电子邮件的正文中

时间:2016-08-19 17:48:47

标签: outlook-vba

我希望获取所选收到的电子邮件的正文(在文件夹视图中或作为选定的电子邮件)并在开头添加操作存根,例如......

.Body = StubString & 'Body

我不确定如何使用ActiveInspectormailitem等。

我查看了已回答的问题列表,但我找不到能帮助我的问题。

1 个答案:

答案 0 :(得分:0)

警告:

  • 我收到的电子邮件中很少有一个文本正文(property .Body),我希望查看或修改以供其他人查看。大多数都有一个HTML主体(属性.HTMLBody)。如果有一个文本正文,则是对html正文的粗略简化。
  • 我使用的电子邮件包只显示文本正文,如果没有html正文。除非删除html正文,否则修改文本正文对显示没有任何影响。

在他们之间,我相信这两个答案和下面的宏将提供创建宏所需的所有背景。

我的这个答案是一个教程,让读者了解Outlook对象模型,其中包含您认为最有用的示例宏。您现在应该跳过这个并稍后再回来,因为我相信第二个答案更接近您的要求。 Update excel sheet based on outlook mail

第二个答案演示了如何创建Excel工作表并将邮件项的选定属性复制到该工作表,以便用户可以查看邮件项对VBA程序的外观。如上所述,宏输出收件箱中每个邮件项目的详细信息。其中的注释显示如何将宏的输出限制为选定的电子邮件,以便您可以检查要修改的邮件项的内容。 How to copy Outlook mail message into excel using VBA or Macros

以上答案都会检查所选文件夹中的所有邮件。如果您选择几个邮件项目然后运行下面的宏,您将获得这些邮件项目的选定属性。

Public Sub DemoExplorer()

  Dim Exp As Outlook.Explorer
  Dim ItemCrnt As MailItem
  Dim NumSelected As Long

  Set Exp = Outlook.Application.ActiveExplorer

  NumSelected = Exp.Selection.Count

  If NumSelected = 0 Then
    Debug.Print "No emails selected"
  Else
    For Each ItemCrnt In Exp.Selection
      With ItemCrnt
        Debug.Print "--------------------------"
        Debug.Print "From: " & .SenderName
        Debug.Print "Subject: " & .Subject
        Debug.Print "Received: " & Format(.ReceivedTime, "dMMMyy h:mm:ss")
        'Debug.Print "Text " & Replace(Replace(Replace(.Body, vbLf, "{lf}"), vbCr, "{cr}"), vbTab, "{tb}")
        'Debug.Print "Html " & Replace(Replace(Replace(.HTMLBody, vbLf, "{lf}"), vbCr, "{cr}"), vbTab, "{tb}")
      End With
    Next
  End If

End Sub