2017-06-21 45 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 –

相關問題