티스토리 뷰

EXCEL/VBA

[Excel VBA] TEXT FILE I/O 입력 출력

마구자바 2024. 1. 17. 20:43
반응형

 

엑셀 MACRO (VBA)로 Text 혹은 CSV 파일을 열고, 데이터 읽기, 쓰기를 하는 방법이다.

기본적으로 "Open" 명령어를 사용하여 파일을 열고, "Read", "Write"명령어를 사용하여 데이터를 읽고쓰는데,

다음과 같은 내용을 간단히 숙지하고 사용하도록 한다.

 

다음 3가지 모드 중에 한가지를 선택하여 파일을 열어야 한다.

 

INPUT 

      : 데이터 혹은 Text  File 읽기 모드. 데이터 추가, 편집 등이 불가능

OUTPUT

      : 데이터 혹은 Text File 쓰기 모드. 파일을 초기화하고 빈 파일로 연다. 데이터 추가, 편집 가능

APPEND 

      : 데이터 쓰기 모드. 데이터 파일을 열고 내용 맨 뒤에 커서가 위치함. 데이터 추가, 편집 가능

 

따라서, 데이터를 출력하기 위해서는 기존의 데이터에 추가하는 것인지 새로 데이터를 쓸 것인지를 판단해서 Output과 Append 중 선택하여 사용하도록 한다.

 

또한, 파일을 열고 닫을때, File Number를 지정해주어야 하는데, 번호를 지정하려면 번거로우니, "FreeFile"이라는 명령어를 사용해서 지정하도록 한다.

 

새파일로 쓰기 예제
Sub FileOpen()
'
' 파일 넘버 지정
'
iFree = FreeFile()   
    
'
' 파일 열기 (파일 내용 초기화, 빈파일로 열림)
'
Open "C:\test\Default.txt" For Output As iFree

'
' 문자 출력
'
   Print #iFree, "HELLO! TEST!"

'
' 파일 닫기
'
Close iFree

End Sub

 

기존 파일에 쓰기 예제
Sub FileOpen()
'
' 파일 넘버 지정
'
iFree = FreeFile()   
    
'
' 파일 열기 (기존 파일의 맨 끝으로 커서 이동하여 입력 대기)
'
Open "C:\test\Default.txt" For Append As iFree

'
' 문자 출력
'
   Print #iFree, "HELLO! TEST!"

'
' 파일 닫기
'
Close iFree

End Sub

 

텍스트 파일 입력 예제
Sub FileRead()
'
' 파일 넘버 지정
'
iFree = FreeFile()   
    
'
' 파일 열기 (기존 파일의 맨 끝으로 커서 이동하여 입력 대기)
'
Open "C:\test\Default.txt" For Input As iFree

'
' 파일 끝까지 데이터 읽기
'
Do Until EOF( iFree )
	
    Line Input #iFree, LineData		' 각 줄 데이터를 읽어서 LineData에 저장
	
    '
    ' 데이터가 ,로 구분하여 저장되어있다고 가정함(CSV파일)
    ' 각자 데이터 포맷에 맞춰 아래 부분을 수정해야함
    '
    Data = Split( LineData, ",")	' LineData를 "," 별로 구분하여 배열로 저장
    
    ' 결과물..
    '
    ' Data(0)	: 첫번째 데이터
    ' Data(1)	: 두번째 데이터
    ' ...
    ' Data(n)	: 마지막 데이터
    '
    
Loop

'
' 파일 닫기
'
Close iFree

End Sub

 

 

 

 

 

 

 

댓글