我有以下代码,取自 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