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

2022. 6. 30. 11:48 엑셀/엑셀 VBA

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]로 저장합니다.


출처: https://it205.tistory.com/32?category=340238 [얼음가득:티스토리]