【问题标题】:Find and Replace specific string in Outlook message在 Outlook 邮件中查找和替换特定字符串
【发布时间】:2020-06-28 09:22:56
【问题描述】:

我的代码基本上在电子邮件正文中搜索字符串"#XX""#XX" 后面通常跟"#XXApple" 之类的文本。这个"#XXApple" 可以在电子邮件中多次看到。

下面的代码以这样的方式工作,它只用空格替换第一个命中。不过"#XXApple"的其余部分只会改为"Apple"

有没有办法可以在 Outlook 中执行“查找并替换所有”?

obj.HTMLBody = Replace(obj.HTMLBody, "#XX", " ", 15)

【问题讨论】:

  • 你的意思是你想先找出 #XX 是否是任何字符串的开头,如果是,那么你想替换整个字符串而不是 #XX ?例如。输入 #XXApple#XXBanana 和输出是整个字符串替换为其他内容
  • @Rohan K 是的,类似的。或者另一种是删除整个字符串“#XXApple”
  • 好吧,您可以做的是将整个电子邮件正文放在一个字符串中,然后将Split 字符串按空格并使用Instr 测试每个拆分后的字符串是否匹配,如果匹配则替换带有"" 的字符串

标签: vba outlook


【解决方案1】:

未经测试或验证,但这是我在上面评论中要表达的大致意思。

 Dim Cet
 Dim TesPos As Int, i As Int
 Cet = Split(obj.HTMLBody, " ")

 For i=LBound(Cet) to Ubound(Cet)
     TestPos = 5
     TestPos = InStr(1,Cet(i), "#XX", CompareMethod.Text)

     if TestPos = 1 then
         Cet(i) = ""
     Else: End if
 Next i

 obj.HTMLBody = ""
 For i=LBound(Cet) to Ubound(Cet)
    obj.HTMLBody = obj.HTMLBody & " " & Cet(i)
 Next i

 Debug.Print obj.HTMLBody

【讨论】:

    【解决方案2】:

    Outlook 对象模型提供了三种处理项目主体的主要方式:

    1. Body - 表示 Outlook 项目的明文正文的字符串。
    2. HTMLBody - 表示指定项的 HTML 正文的字符串。
    3. Word editor - 正在显示的消息的 Microsoft Word 文档对象模型。 Inspector 类的 WordEditor 属性从 Word 对象模型返回 Document 类的一个实例,您可以使用它来设置消息正文。

    您可以在Chapter 17: Working with Item Bodies 中阅读有关所有这些方式的更多信息。由您决定选择哪种方式来处理消息正文。但是 Word 对象模型提供了完成工作所需的所有方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2011-05-25
      • 2013-11-28
      • 1970-01-01
      • 2016-01-29
      相关资源
      最近更新 更多