如何使用正则表达式替换转发电子邮件中的文本

如何使用正则表达式替换转发电子邮件中的文本

我有以下代码,取自 niton (使用 VBA 在 Outlook 中转发电子邮件)。

Private Sub objInboxItems_ItemAdd(ByVal item As Object)

    Dim objMail As MailItem
    Dim objForward As MailItem
    
    Dim beginStr As String
    Dim lenBegin As Long

    beginStr = "Report - Daily Sales"
    lenBegin = Len(beginStr)

    If TypeOf item Is MailItem Then

        Set objMail = item

        'New email where the "beginning is the same"
        If Left(objMail.Subject, lenBegin) = beginStr Then

            Set objForward = objMail.Forward

            'Customize the forward subject, body and recipients'
            With objForward
                .Subject = "Daily Sales Report as of: " + Format(Now(), "mm/dd/yyyy")
                .HTMLBody = objForward.HTMLBody
                .Recipients.Add ("[email protected]")
                .Display    '.Send
            End With

        End If
    End If
End Sub

它运行完美,可以更改主题,但我不知道如何从正文中删除文本。如果有函数可以做到这一点,我将删除所有文本,只留下图片,这最好,如果没有,有没有关于如何使用替换和正则表达式替换的良好教程或示例?在 excel 中熟练使用 VBA,但第一次在 outlook 中使用。

谢谢

答案1

我看到您正在使用 objForward.HTMLBody - 这是我在 regex101.com 上尝试过的正则表达式:

(<(img|IMG) [^>]+>)

我针对以下字符串进行了测试

<HTML><BODY>This is text <img src="http://example.com/path/test.img" /> and then <IMG src="http://example.com/path/test2.img" /></BODY></HTML>

您可以使用它取出所有火柴,然后用一组新的标签包裹它们。

希望这会有所帮助,但不幸的是,我无法帮助使用 VBA 代码来设置正则表达式搜索 - 不过,这里有一个链接可以提供这方面的一个例子:

https://stackoverflow.com/questions/65195118/regular-expression-in-excel-vba-to-perform-exact-match

相关内容