텍스트 파일 읽기에 해당하는 글 1

[엑셀]VBA를 이용해서 Text 파일 읽기 (UTF-8 파일 읽기)

학습/엑셀 VBA|2011. 5. 12. 15:41
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

VBA을 이용해서 Text 파일 (혹은 Xml등등)을 읽는 방법입니다.

보통 VBA의 FileSystem을 이용한 [Open / Close를 활용 한 방법이 있습니다. 
(구글링 및 네이버를 이용해서 쉽게 찾을 수 있습니다.)

하지만 FileSystem은 ASCII 형태로 저장이 되어 일부 프로그램에서 로드할 때 깨지거나,
문제점이 발생할 수 있습니다. 
(회사에서 UTF-8 형태로 모두 바꾸는 바람에 기록 방법을 바꾸어야 했어요 ㅠㅠ)

이 때에는 Stream을 이용해서 File을 읽을 수 있습니다.

'Stream의 생성

Dim stmFileControl As Stream       'Stream 인자 생성
Set stmFileControl = New Strem     'Stream 저장공간 배치

stmFileControl .Open
stmFileControl.Position = 0             '기록, 혹은 읽을 위치를 0으로 맞춘다.
stmFileControl.Charset = "UTF-8"                   '저장시 [UTF-8]로 읽거나 저장합니다.

'Stream에 파일 읽기

Stream.LoadFromFile("C:\Text.txt")
'C:\Text.txt에 파일을 읽겠다는 선언을 합니다.

sStr = LuaStream.ReadText()
'이전에 LoadFromFile로 선언한 C:\Text.txt에서 글자를 모두 읽어옵니다.

'Stream에서 파일로 저장


stmFileControl.SaveToFile "C:\Test.txt", adSaveCreateOverWrite
'C:\Test.txt에 저장(혹은 생성)하겠다는 것입니다.
'adSaveCreateOverWrite가 해당 옵션을 선택하는 것입니다. (다른 옵션도 있겠지만.. 확인하지 않았어요..

stmFileControl.Close
'stmFileControl을 닫습니다.


각 생성 및 소멸을 함수로 묶어서 만들면 편하게 사용할 수 있습니다. : )


--참고하세요!!--
Stream을 사용하려면
Microsoft ActiveX DataObject 2.8(이상)을 사용할 수 있어야 합니다.
VBA에서  [도구>참조] 를 눌러서 위의 라이브러리를 추가해주세요.

그냥 일반적으로 사용하는 Text형식은 아래와 같습니다.
stmFileControl.Charset = "euc-kr"                  '저장시 [euc-kr8]로 저장합니다.

-- UTF-8로 기록하는 방법 --
http://it205.tistory.com/entry/VBA에서-Text-파일-저장하기-UTF-8-로-저장하기

댓글()