在Outlook电子邮件中查找并突出显示单词

时间:2018-01-25 11:00:07

标签: vba outlook outlook-vba

如何在电子邮件正文(撰写部分)中查找文本(在本例中为-1.00(某些负数)或+1.50(某些正数)并更改这些单词的字体颜色。

1 个答案:

答案 0 :(得分:0)

即使你将问题简化为编辑,我也很困惑。你真的想要字体而不是标志吗?结果对我来说很奇怪。

我创建了一个除了编辑之外什么都不做的子程序。您可以在其周围放置代码以实现您的目标,或者您可以从我的子例程中选择想法并将它们合并到您自己的例程中。

该子程序的参数是:

前缀和文字

你可以有Prefix =“+”和Text =“1.50”或Prefix =“”和Text =“+1.50”。第一个,只有数字格式化;第二个标志也被格式化。这些字符串的长度可以是您要求的1和4之类的任何内容。

StartFormat和EndFormat

有许多可能的技术来格式化Html文本的位,但我想不出一个不涉及在文本之前放置一个开始字符串和在文本之后放置一个结束字符串的方法。在我的测试中,我创建了一个带有一些黑色,一些红色和一些蓝色文本的html文档。我在每个部分放置“+1.50”。我为Start Format和EndFormat传递的值是“< span style =”“color:#00FF00”“>”和“< / span>”。 EditHtml的调用将所有“+1.50”或所有“1.50”设置为绿色。

<强> HTML

这是要修改的Html文档。它通过“By Reference”传递,因此原始字符串会更新。

我希望这会有所帮助。

Sub EditHtml(ByVal Prefix As String, ByVal Text As String, _
             ByVal StartFormat As String, ByVal EndFormat As String, _
             ByRef Html As String)

  Dim Pos As Long

  Pos = 1

  ' Loop for each occurrence of Prefix & Text.
  Do While True
    Pos = InStr(Pos, Html, Prefix & Text)
    If Pos = 0 Then
      Exit Do
    End If

    Pos = Pos + Len(Prefix) ' Step over prefix

    ' Insert string that starts format change
    Html = Mid(Html, 1, Pos - 1) & StartFormat & Mid(Html, Pos)

    Pos = Pos + Len(StartFormat) ' Step over string that starts format change
    Pos = Pos + Len(Text)        ' Step over text whose format is to be changed

    ' Insert string that ends format change
    Html = Mid(Html, 1, Pos - 1) & EndFormat & Mid(Html, Pos)

    Pos = Pos + Len(EndFormat) ' Step over string that ends format change

  Loop

End Sub