반응형
🧩 현상
간혹 엑셀 VBA로 XML 파일을 LOAD 하여 텍스트를 변수로 등록할 때 의도하지 않은 "?" 문자가 보이는 경우가 있습니다.
※ 다시 하니 정상으로 되어서 그냥 강제로 한번 만들어봤습니다.
물론 코드를 보시면 홍길동이 다르다는 것을 알지만 해당 변수가 XML에서 불러온 값이라면 당혹스러웠을 겁니다.
① 을 보시면 변수에는 동일한 홍길동? 값을 보유하고 있지만
지금부터 작성하는 아래 내용을 통해서 ② , ③ 이미지와 동일하게 2개의 물음표는 다른 값을 나타내는 것을 알 수 있게 됩니다.
🔍 원인: ChrW(160), Non-breaking space (NBSP)
문제의 정체는 바로 ChrW(160), 즉 non-breaking space(줄바꿈이 되지 않는 특수 공백문자)입니다.
- 우리가 흔히 사용하는 스페이스(공백)는 Chr(32)
- 그러나 웹/문서/XML 등에서는 ChrW(160)이 섞여 있는 경우가 많습니다
- 이 문자는 일반적으로 눈에 보이지 않거나?로 표시됩니다
🔧 확인 방법: ASCW 함수 활용
아래 코드를 사용하면 문자열 속 문자들의 Unicode 값을 확인할 수 있어 어떤 문자가 들어있는지 쉽게 확인할 수 있습니다.
Sub TEST2(TXT As String)
Dim i As Integer
For i = 1 To Len(TXT)
Debug.Print Mid(TXT, i, 1), AscW(Mid(TXT, i, 1))
Next i
End Sub
이렇게 하면 콘솔에 문자별 유니코드 값이 출력되고, 값이 160인 문자가 있으면 그것이 바로 문제의 주범입니다.
🧼 해결 방법: ChrW(160) 제거하기
아래와 같이 VBA의 Replace 함수를 사용해 해당 문자를 제거할 수 있습니다.
txt = Replace(txt, ChrW(160), "") ' 빈칸으로 제거
또는 일반 스페이스로 바꾸고 싶다면:
txt = Replace(txt, ChrW(160), " ") ' 일반 스페이스로 변환
💡 참고 팁
- Word나 웹에서 복사한 텍스트, 또는 외부 시스템에서 생성한 XML에 ChrW(160)이 자주 포함됩니다.
- 이런 공백은 눈에는 보이지 않지만 비교 연산 시 오류의 원인이 될 수 있습니다.
- XML을 VBA로 다룰 때는 항상 텍스트 정리 전처리를 고려하세요!
반응형
'엑셀 > VBA' 카테고리의 다른 글
[VBA] TXT(텍스트) 파일을 읽고 다양한 방식으로 활용하는 법 (0) | 2025.04.20 |
---|---|
[VBA] 외부 엑셀 파일의 시트를 현재 파일로 복사하고 시트 이름 바꾸기 (0) | 2025.04.19 |
Excel VBA로 XML 유효성 검사 + XML 타입 비교까지 정리! (0) | 2025.04.15 |
CONCAT vs CONCATENATE 함수 비교와 구버전 Excel에서 대체하는 방법 (VBA 활용) (0) | 2025.04.13 |
Excel VBA로 셀의 텍스트에 서식을 적용하는 방법: 전체 vs 부분 서식 정리 (0) | 2025.04.12 |
댓글