반응형

와....xml 을 했더니 이제는 텍스트가 날 괴롭히네...


일반 적인 형식으로 읽으면 문자가 다 깨져서 objStream 으로 읽어야 한다..


Private Sub Read()


filename = "c:\text.txt"

Dim objStream As Object '읽어올 objStream 을 만들고

Set objStream = CreateObject("ADODB.Stream") 'objStream 을 ADODB.Stream으로 생성

objStream.Open ' 열고

objStream.Type = 2 'adTypeText '텍스트 타입

objStream.Charset = "UTF-8" '캐릭터셋을 utf-8로

objStream.LoadFromFile filename '오브젝트 스트림에 파일을 로드

Do Until objStream.EOS '오브젝트 스트림이 종료시까지 반복

strLine = objStream.ReadText(-2)  ' strLine에 한줄씩 넣기

Loop


End Sub


별거 아닌데 은근 꽤 찾아야 나오더라는..;;

반응형
반응형

아 정말 닭이네..쓰는것만 하고 읽는거 포스팅 안함..(아놕)

다른애들과 동일하게 VBA 메뉴 도구-참고에서


위에 체크한거 다해야함 안하면 안뎀


    Dim objStream As Object '선언
    Set objStream = CreateObject("ADODB.Stream") '만들기
   
    Dim var_String As Variant '졸라지게 큰 스트링 배정
    objStream.Charset = "UTF-8" '읽어옭 캐릭터셋 지정
    objStream.Open '파일열어!!
    objStream.LoadFromFile ClientPath & Application.PathSeparator & "파일명"
    var_String = Split(objStream.ReadText, vbCrLf) 'split entire file into array - lines delimited by CRLF '에 그러니까 CRLF  줄넘김 있으면 자르는거임
    Range("i1").Resize(UBound(var_String) - LBound(var_String)).Value = Application.Transpose(var_String)'i1 부터 넣음

'요기서 부터는 셀 자르기!!

    Worksheets(strSheetName).Cells(1, 8) = "=COUNTA(i:i)"
    For j = 3 To Worksheets(strSheetName).Cells(1, 8) - 1
        strData = Worksheets(strSheetName).Cells(j, 9)
        upst = 1 '이거 맨앞에 어퍼스트로피(') 요놈이 있는경우가 있어서 체크함
        For i = 1 To Len(strData)
            strText = Mid(strData, i, 1)
            If strText = ">" Or strText = "<" Or i = Len(strData) Or strText = """" Then
                If Mid(strTemp, 1, 1) = "'" Then
                rngImport.Offset(r, c) = "''" + strTemp
                Else
                rngImport.Offset(r, c) = strTemp
                End If
                c = c + 1
                strTemp = ""
            Else
                If strText <> Chr(34) Then
                       strTemp = strTemp & strText
                End If
            End If
        Next i
        c = 0
        r = r + 1
    Next j

반응형
반응형

해외버전 작업시 UTF-8로 스트링 파일을 저장해야 하는 문제가 발생

기존의 파일 쓰기 방식으로는 파일 생성시 캐릭터 셋이 ansi 로 되기 때문에 구글링~~~

vba 도구 참조에서 

오브젝트 라이브러리 관련된거 체크 해줘야 됨

Dim objStream As Object '오브젝트를 선언
Set objStream = CreateObject("ADODB.Stream") '오브젝트 생성
objStream.Open '열기!!
objStream.Position = 0 '쓰기 위치
objStream.Charset = "UTF-8" '캐릭터셋 설정
objStream.WriteText "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbCrLf
'쓰기 vbCrLf 는 줄바꿈 명령어
objStream.SaveToFile strPathName, 2 'strPathName 에 파일 위치와 파일명이 있어야함
objStream.Close '닫기
Set objStream = Nothing '사라져!!






반응형

+ Recent posts