我有一个由客户填写的在线表格,然后通过电子邮件使用标准模板发送。当我们发送回复时,我们会手动输入每个回复的客户名称。我正在寻找的是一种提取名称并将其插入电子邮件顶部的方法。
名称始终以名字作为前缀:"名称"。 在电子邮件的开头,我想填写名称,例如亲爱的"姓名",
我知道在Excel中你可以使用单元格公式只取一部分字符串:= LEFT(G91,LEN(G91)-5) 有什么方法可以在Outlook中使用类似的东西吗?
我一直无法找到一种方法来接收电子邮件正文的特定部分并在电子邮件中引用它。我在网上找到的所有内容都集中在导出到Excel或添加到文本末尾。
答案 0 :(得分:0)
未经测试 - 已编辑 - 已根据评论
中的建议修复Sub FwdSelBodyName()
Dim objOL As Outlook.Application
Dim objItem As Object
Dim objFwd As Outlook.MailItem
Dim strAddr As String
Dim strName As String
On Error Resume Next
Set objOL = Application
Set objItem = objOL.ActiveExplorer.Selection(1)
If Not objItem Is Nothing Then
strName = ParseTextLinePair(objItem.Body, "First Name:")
If strAddr <> "" Then
Set objFwd = objItem.Forward
objFwd.HTMLBody = "Dear " & strName & objFwd.HTMLBody
objFwd.Display
Else
MsgBox "Could not extract name from message."
End If
End If
Set objOL = Nothing
Set objItem = Nothing
Set objFwd = Nothing
End Sub
Function ParseTextLinePair (strSource As String, strLabel As String)
Dim intLocLabel As Integer
Dim intLocCRLF As Integer
Dim intLenLabel As Integer
Dim strText As String
intLocLabel = InStr(strSource, strLabel)
intLenLabel = Len(strLabel)
If intLocLabel > 0 Then
intLocCRLF = InStr(intLocLabel, strSource, vbCrLf)
If intLocCRLF > 0 Then
intLocLabel = intLocLabel + intLenLabel
strText = Mid(strSource, _
intLocLabel, _
intLocCRLF - intLocLabel)
Else
intLocLabel = _
Mid(strSource, intLocLabel + intLenLabel)
End If
End If
ParseTextLinePair = Trim(strText)
End Function