메뉴
실무 위키VBA 코드Read_TextFile

Read_TextFile

Function

파일 경로의 메모장 또는 CSV 파일 내용을 읽어오는 VBA 사용자 지정 함수입니다.

Read_TextFile 코드 미리보기
구문 = Read_TextFile ( 파일경로, [인코딩형식] )
인수구분 형식 설명
파일경로 필수 String
메모장 또는 CSV 파일을 불러올 파일 경로입니다. 폴더경로 및 확장자를 모두 포함한 전체 경로를 입력합니다.
파일경로가 올바르지 않거나 존재하지 않는 파일일 경우 결과값으로 #VALUE! 오류를 반환합니다.
인코딩형식 선택 String
파일을 읽어올 인코딩 형식입니다. 기본값은 UTF-8 입니다.
필요에 따라 Unicode, ANSI 등의 인코딩 형식을 지정할 수 있습니다.

마스터 코드

복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요
Module1 · Read_TextFile
Function Read_TextFile(sPath As String, Optional Charset As String = "UTF-8") As String
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'■ Read_TextFile 함수
'■ 텍스트 또는 CSV 파일을 읽어옵니다.
'■ 인수 설명
'_____________sPath : 텍스트 또는 CSV 파일의 파일경로입니다.
'_____________Charset : [선택인수] 인코딩형식입니다. 기본값은 UTF-8 입니다. Unicode, ANSI 등으로 설정할 수 있습니다.
'■ 사용 예제
's = Read_TextFile("C:\Temp\Test.txt")
'##############################################################
On Error GoTo EH:
Dim objADO As Object
Set objADO = CreateObject("ADODB.Stream")
With objADO
.Open
.Charset = Charset
.LoadFromFile sPath
Read_TextFile = .ReadText
End With
Exit Function
EH:
Read_TextFile = CvErr(xlValue)
End Function

활용 예제

현재 실행중인 파일과 같은 폴더의 메모장 불러오기
= Read_TextFile ( LEFT(CELL("filename",A1),FIND("\[",CELL("filename",A1)))&"테스트.txt" )
= Read_TextFile ( "C:\폴더경로\테스트.txt" )
'// C:\폴더경로\테스트.txt 메모장 파일 내용을 출력합니다.
특정 경로의 CSV 파일 내용 불러오기
= Read_TextFile ( "C:\Temp\테스트.csv" )
'// C:\Temp\테스트.csv CSV 파일 내용을 출력합니다.

안내사항

인코딩 형식이 파일과 맞지 않으면 글자가 깨져서 출력됩니다.
파일을 메모장으로 실행한 뒤 [파일] - [다른 이름으로 저장] 대화상자 오른쪽 아래에서 파일의 인코딩 형식을 확인해 지정합니다.
댓글 7
5 (6개 평가)
삐가삐까츅
삐가삐까츅 2021.05.10 02:28
새로운 함수네요~~!! 와우 잘 동작합니다 ㅎㅎ 감사히 잘 쓰겠습니다
별바람흙
별바람흙 2021.05.21 10:59
으와... 이런 곳이 다 있네요. 감사합니다.
greenm****
greenm**** 2021.07.10 14:42
이렇게 다양한 기능이 있다니...
헤이민
헤이민 2022.01.25 09:46
텍스트 파일이 ANSI 코딩일 경우 엑셀 함수를 어디서 변경 해야하나요? Value 오류가 뜹니다!
오빠두엑셀
오빠두엑셀 작성자 2022.01.25 21:15
헤이민님 안녕하세요.
아래 코드를 사용하면 ANSI를 UTF-8 형식으로 변환할 수 있습니다.
https://officetricks.com/vba-to-change-file-encoding-ansi-to-utf8-text-to-unicode/
코드를 적절한 위치에 추가해서 한번 수정해보세요 :)
Sub convertTxttoUTF(sInFilePath As String, sOutFilePath As String)
Dim objFS As Object
Dim iFile As Double
Dim sFileData As String

'Init
iFile = FreeFile
Open sInFilePath For Input As #iFile
sFileData = Input$(LOF(iFile), iFile)
sFileData = sFileData & vbCrLf
Close iFile

'Open & Write
Set objFS = CreateObject("ADODB.Stream")
objFS.Charset = "utf-8"
objFS.Open
objFS.WriteText sFileData

'Save & Close
objFS.SaveToFile sOutFilePath, 2 '2: Create Or Update
objFS.Close

'Completed
Application.StatusBar = "Completed"
End Sub
호시소라
호시소라 2023.05.09 10:35
이 게시글 관련 강의를 보고싶은데.. 어디에서 볼 수 있을까요?ㅠㅠ
강민준🤗
강민준🤗 2024.08.11 12:57
좋은 자료 감사합니다.🙇‍♂️
스크랩 완료