<엑셀VBA 입문 15강> 텍스트 파일쓰기, 파일읽기
엑셀 VBA로 텍스트 파일쓰기, 텍스트 파일읽기를 배워본다.
1. VBA 텍스트 파일쓰기

|
Sub 매크로1() Call writeTextFile End Sub Function writeTextFile() ‘Open path For Append As #1 일 경우 이어쓰기 End Function |
파일을 쓰기 위한 가장 간단한 코드다.
C드라이브의 test 폴더 내의 test.txt 파일에 “첫번째 라인”, “두번째 라인”, “세번째 라인”, 이렇게 3줄의 텍스트를 기록하고 저장한다.
여기서 #1 이란 파일스트림이다. 파일스트림이란, 파일을 읽거나 쓰기 위한 어떤 구조다. 스트림은 원래 물줄기라는 뜻이지만, 그냥 스트림이라고 하면 긴 호스나 빨대를 생각해도 좋다.
[Open path For Output As #1] 란 path경로의 파일을 #1[샾1] 이란 명칭의 아웃풋 스트림으로 연다는 뜻이다.
1-1. test 폴더 생성 필요
C드라이브에 test 폴더를 생성 후 실행해야 한다.
그렇지 않으면 [경로를 찾을 수 없습니다] 에러가 발생할 수 있다.

1-2. 파일 이어서 쓰기
파일을 이어서 쓰려면 [Open path For Output As #1] 의 Output을 Append로 고치면 된다. 즉, [Open path For Append As #1]하면 파일 이어서 쓰기가 된다.
예를 들어 For Output 로 writeTextFile 함수를 여러 번 수행하면, 몇 번을 수행하든 결과는 3줄짜리 텍스트 파일이다.
그런데 For Append 로 writeTextFile 함수를 여러 번 수행하면, 아래와 같이 텍스트 파일 뒤에 내용이 계속 추가된다.

2. VBA 텍스트 파일읽기

|
Sub 매크로1() Call readTextFile End Sub Function readTextFile() Open path For Input As #1 End Function |
위 코드는 텍스트 파일을 읽어 Cells(1,1) – 즉 A1 셀부터 한 줄씩 내용을 출력하는 코드다.
[Do While Not EOF(1)]라는 부분이 있는데, 여기서 1은 파일스트림의 번호를 뜻한다. EOF란 End Of File의 약자로, 파일의 끝을 의미한다.
파일의 끝일 경우, EOF는 true를 리턴한다. 파일의 끝이 아닐 경우, EOF는 false를 리턴한다.
즉 [Do While Not EOF(1)] 는 파일스트림 1이 끝나지 않는 한 계속 도는 루프문이다.
위 코드를 실행하면 아래와 같은 결과를 얻는다.

만약 텍스트 파일의 형식이 UTF-8 이라면 다음 소스코드를 사용하시면 됩니다.
|
Const CP_UTF8 = 65001 Sub 매크로1() Call readTextFile End Sub Function readTextFile() ‘엔터를 구분자로 Split 하기 End Function |
이어지는 글 <엑셀VBA 입문 16강> VBA로 워크시트 함수 활용하기 : https://blog.naver.com/bb_/221350410698
이어지는 글 <엑셀VBA 입문 17강> 변수를 같은 이름으로 사용하면 섞일까? (지역변수와 전역변수) :
https://blog.naver.com/bb_/221417490850
이어지는 글 <엑셀VBA 입문 18강> indexOf 함수의 확장 https://blog.naver.com/bb_/221650929713