Excel의 VBA 스크립트에서 정규 표현식이 오류 '5018'을 호출하는 이유


2

폴더에서 Excel 스프레드 시트로 많은 "* .txt"파일을 작성해야하므로 Excel 용 첫 번째 VBA 스크립트를 작성했습니다. 그러나이 스크립트를 실행하면 '5018'오류가 발생합니다. 라인에 의해 호출됩니다

If reg.Test(file.Name) Then

내가 뭘 잘못하고 있는지 알아? 완전한 스크립트는 다음과 같습니다.

Sub get_filenames()
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Files = fso.GetFolder("C:\myfolder").Files
    Set reg = CreateObject("vbscript.regexp")

    reg.IgnoreCase = True
    reg.MultiLine = False
    reg.Pattern = "*.txt"

    For Each file In Files
        If reg.Test(file.Name) Then
            i = i + 1
            Cells(i, 1) = file.Name
        End If        
    Next
End Sub

답변:


2

방금 고 쳤어요 분명히 내 정규 표현이 잘못되었습니다. 5018은 "정규 표현식의 예기치 않은 수량 자"를 나타냅니다. 그래서 나는 그것을

reg.Pattern = "^.+\.txt$"

1
실제로 * 와일드 카드로서 유효한 정규 표현식이 아닙니다. "이전 문자를 0 번 이상 일치"를 의미합니다
Phoshi

1
VBA가 익숙한 구문과 동일한 구문을 사용한다고 가정하면 텍스트 파일과 일치하도록 "^. + \. txt $"를 고려하십시오.
Phoshi

@Phoshi : 예, 솔루션이 우수하다고 생각합니다. 게시물을 수정하겠습니다.
Lucas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.