通过电子邮件search以查找并突出显示文本

我正在用Excel的VBA试图自动发送一些电子邮件。 现在,代码会根据单击button旁边的单元格创build电子邮件,并将电子邮件转发到单元格中列出的电子邮件,然后根据更多单元格插入特定主体消息。 单元格中的内容并不重要,但我需要做的是search原始转发的特定文本消息,如果find,则需要突出显示该文本。

我的代码如下:

Sub Asset_email() Dim olApp As Outlook.Application Dim olNs As Namespace Dim Fldr As MAPIFolder Dim olMail As Outlook.MailItem Dim i As Integer Dim olMsg As Outlook.MailItem Dim r As Range Dim strLocation As String Dim o As Outlook.Application Dim strbody As String 'Dim olAtt As Outlook.Attachments 'Set olAtt = olMsg.Attachments Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell Range(Cells(r.Row, r.Column), Cells(r.Row, r.Column)).Select Set olApp = New Outlook.Application Set olNs = olApp.GetNamespace("MAPI") Set Fldr = olNs.GetDefaultFolder(olFolderInbox).Folders("Asset Notifications Macro") i = 1 For Each olMail In Fldr.Items If InStr(olMail.body, ActiveCell.Offset(rowOffset:=0, ColumnOffset:=-3).Value) <> 0 Then olMail.display strbody = "<BODY style=font-size:11pt;font-family:Calibri>Team,<br><br>" & _ "Please see the notice below regarding " & _ ActiveCell.Offset(rowOffset:=0, ColumnOffset:=-2).Value & _ ".<br><br> Feel free to email the CSG team at myemailhere@email.com with any questions.<br><br>" & _ "Thank you!" With olMail.Forward .To = ActiveCell.Offset(ColumnOffset:=-1) .display SendKeys ("%") SendKeys ("7") 'Call Sleep Application.Wait (Now + TimeValue("0:00:03")) .HTMLBody = strbody & "<br>" & .HTMLBody End With End If Next End Sub 

代码工作100%。 我只是不知道正确的语法来search和突出显示结果。

在上面的例子中,可以说我想find并突出显示单词“谢谢”。 怎么会这样呢?

您基本上必须使用Word对象模型进行文本search和高亮显示。 这篇文章中有一个完美的例子: https : //msdn.microsoft.com/en-us/library/gg193974.aspx

在主动检查器中突出显示? 尝试以下。

您可以用set objInspector = olMail.GetInspectorreplace行set objInspector = Application.ActiveInspector

  wdColorYellow = 65535 set objInspector = Application.ActiveInspector set objDoc = objInspector.WordEditor set objFind = objDoc.Content.Find objFind.HitHighlight "text_to_highlight", wdColorYellow, , false, true 

Outlook对象模型为工作项主体提供了三种主要方式:

  1. 正文 – 表示Outlook项目的明文正文的string。
  2. HTMLBody – 表示指定项目的HTML正文的string。 在这种情况下,您需要parsingHTML标记并添加周围的标记以突出显示文本。 例如,您可以使用<b>作为粗体符号。
  3. Word编辑器 – 正在显示的消息的Microsoft Word文档对象模型。 Inspector类的WordEditor属性返回Word对象模型中的Document类的实例,您可以使用它来处理消息正文。 Font类的Bold属性允许将文本格式化为粗体。

你可以在第17章:使用物品主体中阅读更多关于这些方面的内容。 我们决定以哪种方式(HTML或Word对象模型)来突出显示文本。

弄清楚了:

 .HTMLBody = Replace(.HTMLBody, "Thank you", "<FONT style=" & Chr(34) & "BACKGROUND-COLOR: yellow" & Chr(34) & ">" & "Thank you" & "</FONT>")