2017-06-21 46 views
0

我需要从2个分隔符之间提取字符串,具体来说,我必须将电子邮件地址附加到附件文件名以便它可以被处理并发回给发件人。 (这是在Outlook 2013 VBA)在2个字符串之间获取字符串,并且父字符串的末尾

文件名的格式是: ADDR johnDOTdoeATfooDOTcom XADDR A646A10.FOO

我的分隔符ADDRXADDR

我需要做的是分割字符串,并返回分隔符之间的电子邮件字符串和XADDR之后的文件名。

电子邮件地址和文件名的长度都不相同,文件扩展名不固定。

固定的是ADDR将始终是前4个字符,而.XXX将是最后3个字符。

回答

1

可以使用InStr功能查找第二个分隔符(“XADDR”在这种情况下)开始,并Mid函数提取你想要的部分:

Sub InstrDemo() 
    Dim s, delim1, delim2 As String 
    s = "ADDRjohnDOTdoeATfooDOTcomXADDRA646A10.FOO" 
    delim1 = "ADDR" 
    delim2 = "XADDR" 

    Dim pos As Integer 
    pos = InStr(s, delim2) 

    Dim part1, part2 As String 
    part1 = Mid(s, Len(delim1) + 1, pos - Len(delim1) - 1) 
    part2 = Mid(s, pos + Len(delim2)) 

    MsgBox (part1 & vbCrLf & part2) 

End Sub 

输出:

enter image description here

(我用的Excel 2013,因为它是在当时更容易。)

这是更好地把分隔符作为这样的字符串,因为它避免了使用"magic numbers"


或者你可以使用Split功能:

Sub SplitDemo() 
    Dim s, delim1, delim2 As String 
    s = "ADDRjohnDOTdoeATfooDOTcomXADDRA646A10.FOO" 
    delim1 = "ADDR" 
    delim2 = "XADDR" 

    s = Mid(s, Len(delim1) + 1) 
    Dim parts() As String 
    parts = Split(s, delim2) 

    ' optional: check that the correct number of parts were found... 
    If UBound(parts) <> 1 Then 
     MsgBox ("Wrong number of parts.") 
    End If 

    MsgBox (parts(0) & vbCrLf & parts(1)) 

End Sub 

这给输出与前法相同。

+0

谢谢!一个微笑,在电子邮件地址字符串的末尾留下一个X. –

+1

@DigitalLightcraft哎呀!我没有摆弄它。 –

+0

非常好,谢谢,它很好地工作,并且还请求第二个选项:-D –

相关问题