2017-04-24 5 views
0

특정 일련 번호의 전자 메일 본문을 스캔하는 Access에 VBA 코드가 있습니다. 이전에 2로 시작한 일련 번호와 3 개의 문자, 그리고 5 개의 숫자. 가장 일반적인 접두사를 검색하기 위해 게시 된 코드와 같은 것을 사용했습니다. 이제는 시리얼 번호를 변경하여 2를 없애고 현재의 방법을 사용하면 잘못된 텍스트를 잡아낼 가능성이 커집니다. EMText는 이메일 본문이 포함 된 문자열입니다.일련 번호 검색

새로운 형식은 ABC12345D1234입니다. 문자 또는 숫자의 조합이 될 수 있지만 문자는 항상 문자이며 숫자는 항상 숫자입니다. 이 특정 길이와 글자 및 숫자 또는 특정 형식으로 항목을 빠르게 검색 할 수 있습니까? 혼자 지나치게 복잡하지 않은 무언가가 생겨서 내가하는 일과 일치하는 예제를 추적 할 수 없다는 문제가 있습니다.

Function GetUnitNumber(ByVal EMText) As String 

    unit = "" 

If InStr(1, EMText, "2ABC") Then 

    vItem = Split(EMText, "2ABC") 
    unit = "2ABC" & Left(vItem(1), 5) 

ElseIf (InStr(1, EMText, "2CA")) Then 

    vItem = Split(EMText, "2CA") 

    unit = "2CA" & Left(vItem(1), 6) 

ElseIf (InStr(1, EMText, "2DFS")) Then....... 
+0

가 왜 잘못된 텍스트를 잡아하고 싶은 것 : 마이크로 소프트 VBScrpt 정규 표현식

그리고 이것을 사용에

링크? '올바른 텍스트를 잡는 것이 훨씬 더 어려워 짐'을 의미합니까? – June7

답변

1

정규 표현식의 일반적인 시나리오입니다.

Function GetUnitNumber(ByVal EMText) 

Dim regEx As New RegExp 

With regEx 
    .Global = True 
    .MultiLine = True 
    .IgnoreCase = True 
    'This matches the pattern: i.e. ABC12345D1234 
    .Pattern = "[A-Z]{3}[0-9]{5}[A-Z]{1}[0-9]{4}" 
End With 

If regEx.Test(EMText) Then 
    GetUnitNumber = regEx.Execute(EMText)(0) 
End If 

End Function