VB(A)

UTF-8 형식의 텍스트파일 불러오기

당근쨈 2019. 3. 19. 09:48



https://cafe.naver.com/excelmaster/161554 에 올라온 질문입니다.

UTF-8 형식의 텍스트파일을 불러오는데 인터넷에 있는 코드로는 한글이 깨져서 이를 해결하고자 하는 질문입니다.


저 또한 인터넷으로 검색을 해보니

ADODB 개체를 생성하여 UTF-8 텍스틀 불러오는 것이 대부분의 답변이었습니다.

텍스트파일은 질문자의 업무와 관련된 것으로 판단되어 첨부에는 넣지 않았습니다.



엑셀.xlsm


Option Explicit
 
Sub Macro()
 
    Dim strFilter As String
    Dim strFile As String
    Dim i As Integer
    Dim v, tmp
    
    '기존자료 삭제, 변수설정 및 텍스트파일 불러오기
    Range("A1").CurrentRegion.Clear
    ChDir ThisWorkbook.Path
    strFilter = "텍스트파일 (*.txt), *.txt"
    strFile = Application.GetOpenFilename(FileFilter:=strFilter, Title:="파일 선택", MultiSelect:=False)
    
    If strFile = "False" Then Exit Sub  '파일선택 취소하면 매크로 종료
    
    v = Split(TextStrimRead(strFile), vbLf) '텍스트파일을 엔터키 기준으로 나눕니다.
    
    '"|"기준으로 다시 나누어 셀에 출력합니다.
    For i = 0 To UBound(v)
    
        tmp = Split(v(i), "|")
        
        Range("A1").Offset(i).Resize(, UBound(tmp)) = tmp
    
    Next
    
    Range("A1").CurrentRegion.EntireColumn.AutoFit  '열너비 자동 맞춤
    
End Sub
 
Function TextStrimRead(strPathName As StringAs String
'UTF-8 형식의 텍스트파일을 불러오는 사용자정의 함수입니다.
 
    Dim objStream As Object
    
    Set objStream = CreateObject("ADODB.Stream")
    
    With objStream
        .Open
        .Type = 2 'adTypeText
        .Charset = "UTF-8"
        .LoadFromFile strPathName
        TextStrimRead = .ReadText
    End With
    
    Set objStream = Nothing
    
End Function
 
 
cs