엑셀 텍스트 기반 문서 파일(CSV,TXT) 한글 깨져서 보이는 경우
엑셀 텍스트 기반 문서 파일(CSV,TXT) 한글 깨져서 보이는 경우
웹사이트 등에서 주소록, 통계 자료 등 텍스트 기반의 데이터를 다운로드 할때 대부분 쉼표(,) 등 구분문자로 열을 구분하는 CSV 파일로 내보내는 경우가 많습니다.
다운로드 받은 파일을 엑셀로 열면 포함돼있는 한글 등 Unicode 문자가 깨져서 나옵니다. 기타 텍스트(txt) 파일에서도 동일합니다.
이런 경우 Unicode 문자를 UTF-8로 인코딩한 문서에 해당되는데요, 대부분 웹사이트에서는 Unicode 문자를UTF-8로 인코딩하고 있습니다.
![엑셀 utf-8](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
BOM과 UTF-8의 문제
- Unoicode 인코딩 방식은 UTF-8, UTF-16, UTF-16 등이 있으며 BOM(Byte Order Mark)은 Unicode 인코딩 방식을 표시하는 식별 코드로서 문서 시작 부분에 삽입됩니다.
- BOM은 문서 시작 부분 앞에 UTF-8 식별코드(utf-8 signature) 16진수 0xEF 0xBB 0xBF 3바이트를 삽입합니다.
- UTF-8은 인코딩 코드 자체에 인코딩 식별 표시가 있습니다. 따라서 BOM 식별코드는 필요없습니다.
- 엑셀은 Unicode 문자 해석 시 BOM 을 사용하므로 BOM 표시 없는 UTF-8 인코딩은 제대로 표시하지 못합니다.
▶ 참조 : http://blog.wystan.net/2007/08/18/bom-byte-order-mark-problem
아래 내용은 BOM 없이 UTF-8 인코딩 텍스트 기반 문서를 엑셀에서 여는 방법입니다. 간단한 주소록 파일을 예로 들겠습니다.(주소록.csv)
- 윈도우 메모장 파일을 사용하는 경우
- 엑셀 문서에서 외부 데이터 가져오기 사용하는 경우
1. 윈도우 메모장 파일을 사용하는 경우
▶ 파일 탐색기에서 예시한 주소록.csv 문서를 윈도우 메모장으로 엽니다.
![csv utf-8](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
- 위 이미지와 같이 한글이 잘 나오고 있습니다.
▶ 메모장에 열려있는 문서를 아래와 같이 다른 이름으로 저장합니다.
![다른이름으로 저장 utf-8 bom](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
-
윈도우10의 경우
- txt확장자가 아닌경우(csv 등) 파일형식은 모든 파일을 선택합니다.
- 하단 인코딩은
UTF-8 BOM
을 선택합니다.
-
이전 버전 윈도우의 경우
- txt확장자가 아닌경우(csv 등) 파일형식은 모든 파일을 선택합니다.
- 하단 인코딩은
UTF-8
또는UNICODE
를 선택합니다.
▶ 파일 탐색기에서 저장한 문서 파일을 엑셀로 엽니다.
![엑셀 csv](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
위의 이미지 같이 엑셀에서 한글이 잘 표시되는 것을 볼 수 있습니다.
2. 엑셀 문서에서 외부 데이터 가져오기 사용하는 경우(2013 버전)
엑셀 2013 버전에서 위의 파일을 외부 데이터 가져오기로 워크시트에 표시해보겠습니다.
▶ 상단 메뉴 데이터 탭을 선택하고 리본 메뉴 좌측 외부데이터 가져오기 도구에서 텍스트를 선택합니다.
![외부 데이터 가져오기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
▶ 1단계 텍스트 마법사 창이 열립니다.(3단계 중 1단계)
![텍스트 마법사 UTF-8](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
- 열을 쉼표로 구분한 문서이므로 구분 기호로 분리됨(D) 의 선택을 확안합니다.
- 원본 파일(O): 란에 65001 : 유니코드(UTF-8) 이
2013 버전
에서는 기본으로 선택돼 있는데 아니면 선택란 우측 화살표를 눌러 65001 : 유니코드(UTF-8) 을 선택합니다. - 하단 미리보기 상자에 제대로 표시된 한글이 보입니다.
▶ 2단계 단계 텍스트 마법사 창이 열립니다.(3단계 중 2단계)
![텍스트마법사 구분 기호](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
- 구분 기호 선택 항목 중 쉼표 만 체크합니다.
- 하단 데이터 미리보기(P) 부분을 보면 열이 구분된 것을 볼 수 있습니다.
▶ 3단계 텍스트 마법사 창이 열립니다.(3단계 중 3단계)
![데이터 서식](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
- 열 데이터 서식은 일반으로 그대로 두고 마침(F)를 클릭합니다.
▶ 데이터 가져오기 종료 창입니다. 표시할 데이터 위치를 선택하고 확인을 클릭합니다.
![데이터 가져오기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
▶ 워크시트에 데이터가 제대로 표시된 것이 확인되면 엑셀 문서로 저장하고 종료합니다.
![엑셀 UTF-8](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
▼ 엑셀 indirect 함수를 이용한 다중 종속(소분류) 드롭다운 목록
▼ 엑셀 VBA 워크시트 이벤트를 처리하는 VBA 프로시저 코드 작성
▼ 엑셀 VBA CurrentRegion 속성 기존 데이터 영역에 연속해서 데이터 추가하는 프로시저