我需要从 2 个分隔符之间提取一个字符串,具体来说,我必须将电子邮件地址附加到附件文件名,以便可以对其进行处理并将其发送回发件人。(这是在 Outlook 2013 VBA 中)
文件名格式为:ADDR johnDOTdoeATfooDOTcom XADDR A646A10.FOO
我的分隔符是ADDR和XADDR
我需要做的是拆分字符串并返回分隔符和 XADDR 之后的文件名之间的电子邮件字符串。
电子邮件地址和文件名的长度可以不同,文件扩展名不固定。
固定的是 ADDR 将始终是前 4 个字符,而 .XXX 将是最后 3 个字符。
您可以使用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
输出:
(我使用 Excel 2013 因为当时它更容易。)
最好将分隔符作为这样的字符串放入,因为这样可以避免使用"magic numbers"。
或者您可以使用拆分功能:
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
这给出了与前一种方法相同的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句