2017-06-21 33 views
0

2つの区切り文字の間から文字列を抽出する必要があります。具体的には、添付ファイル名に電子メールアドレスを添付して処理する必要があります送信者に返送されます。 (これは、Outlook 2013のVBA内にある)2文字列と親文字列の間の文字列を取得する

ファイル名の形式は次のとおりです。 ADDR johnDOTdoeATfooDOTcom XADDR A646A10.FOO

私の区切り文字が

ADDRXADDRです私がする必要があるのは、文字列を分割し、XADDRの後の区切り文字とファイル名の間の電子メール文字列を返すことです。

メールアドレスとファイル名の両方が異なる場合がありますが、ファイル拡張子は固定されていません。

固定されているのは、常にADDRが最初の4文字になり、.XXXが最後の3文字になります。

答えて

1

は、あなたがしたい部分を抽出するために、2番目の区切り文字(この場合は「XADDR」)が始まる見つけることInStr機能を使用して、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

ありがとうございました! 1つのniggle、電子メールアドレス文字列の最後にXが残っています。 –

+1

@DigitalLightcraftおっと!私はそれを解き放った。 –

+0

優秀、ありがとう、それはうまく働いている、そしてまた第2のオプションのために尋ねる: - D –

関連する問題