티스토리 뷰
※ 텍스트 파일 access방법
Sequence Access(순차적 Access) : 각 문자나 데이터 전체 라인을 읽고 쓸 수 있다(일반적 방식)
Random Access(임의 Access) : DB를 이용하는 프로그램 작성시 사용
Binary Access(이진Access) : 바이트형식 읽고 쓰기에서 사용
▶ FileSystemObject 에 포함된 TextStream 개체를 사용해서 텍스트 파일 읽기쓰기 가능
■ Open 명령문을 이용해서 텍스트 파일 열기
Open pathname For mode [ Access access ] [ lock ] As [ # ] filenumber [ Len = reclength ]
pathname | 파일경로를 포함한 파일이름 |
mode | File Access Mode ( Append, Binary, Input, Output, Random) 지정 / 기본모드 : Random access - 순차적 억세스 Append : 파일을 읽거나 파일 끝에 데이터를 추가할 수 있는 순차적 억세스 모드 Input : 읽기만 가능(쓰기 불가) Output : 파일 읽기쓰기 가능, 항상 새로운 파일이 생성됨(같은 이름 파일 존재시 기존파일 삭제) - 임의 억세스 Random : reclength인수에 의해 지정된 단위로 데이터 읽기쓰기 - 이진 억세스 Binary : 바이트 단위로 데이터 읽기쓰기 |
access | 수행할 작업 선택 ( Read, Write, Read Write) |
lock | 다른 프로세스에 의해 열린 파일에 대해 제한된 작업을 지정 (Shared, Lock Read, Lock Write, Lock Read Write) |
filenumber | 1~511 파일 번호(VBA 함수 FreeFile를 이용해 다음으로 사용 가능한 파일 번호를 얻을 수 있다) |
reclength | <= 32,767 bytes , random access- 레코드 길이 / sequence access - 버퍼에 들어 있는 문자 수 |
■ 텍스트 파일 읽기
1. Open 명령문을 이용해 파일을 연다
2. Seek함수를 이용해 파일 내 위치를 지정한다(선택)
3. Input, Input#, Line Input# 명령문 중 하나를 사용하여 파일에서 데이터 읽기
4. Close 명령문을 이용해 파일을 닫는다
■ 데이터를 텍스트 파일에 쓰기
1. Open 명령문을 이용해 파일을 연다
2. Seek함수를 이용해 파일 내 위치를 지정한다(선택)
3. Write#, Print# 명령문 중 하나를 사용하여 파일에서 데이터 쓰기
4. Close 명령문을 이용해 파일을 닫는다
■ 파일 번호 알아내기
FreeFile함수를 이용하여 유용한 다음파일 번호를 알 수 있다
NextFile = FreeFile
Open "C:\Users\TaeIk\Documents\test.txt" For Input As NextFile
■ 파일의 현재 위치를 알아내거나 설정하기
순차억세스방법을 이용 시 위치를 알 필요가 없다.
Seek함수 사용
Seek [ # ] filenumber, position
Dim MaxSize, NextChar, MyChar Open "TESTFILE" For Input As #1 ' Open file for input. MaxSize = LOF(1) ' Get size of file in bytes. ' The loop reads all characters starting from the last. For NextChar = MaxSize To 1 Step -1 Seek #1, NextChar ' Set position. MyChar = Input(1, #1) ' Read character. Next NextChar Close #1 ' Close file. |
■ 파일 읽기 쓰기 명령문
Input : 지정된 개수만큼의 문자를 읽기
Input# : 열려 있는 파일에서 데이터를 읽어 쉼표(,)로 구분된 변수에 할당
Line Input# : 열려 있는 파일에서 하나의 행을 읽어 변수 String에 할당
Write# : 「쉼표( , )로 구분되고, 큰따옴표( " )로 묶인 데이터」를 순차적 억세스 파일에 쓴다.
세미콜론( ; )으로 명령문을 끝내면 데이터 끝에 CrLf 삽입
보통 Input# 명령문을 이용해 파일을 읽는다.
Print# : 「탭 문자로 구분된 데이터」를 순차적 억세스 파일에 쓴다.
세미콜론( ; )으로 명령문을 끝내면 데이터 끝에 CrLf 삽입 안됨.
보통 Line Input# , Input 명령문을 이용해 파일을 읽는다.
Input | Input(number, [ # ]filenumber) | |
Sub ReadFile() Dim MyChar Open "C:\Users\TaeIk\Documents\test.txt" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. MyChar = Input(1, #1) ' Get one character. Debug.Print MyChar ' Print to the Immediate window. Loop Close #1 ' Close file. End Sub |
h e l l o , w o r l d ! |
|
Input # | Input #filenumber, varlist | |
Sub ReadFile() Dim MyString, MyNumber Open "C:\Users\TaeIk\Documents\test.txt" For Input As #1 ' Open file for input. Do While Not EOF(1) ' Loop until end of file. Input #1, MyString, MyNumber ' Read data into two variables. Debug.Print MyString, MyNumber ' Print data to the Immediate window. Loop Close #1 ' Close file. End Sub |
hello world! | |
Line Input # | Line Input #filenumber, varname | |
Sub ReadFile() Dim TextLine Open "C:\Users\TaeIk\Documents\test.txt" For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. Debug.Print TextLine ' Print to the Immediate window. Loop Close #1 ' Close file. End Sub |
hello, world! |
'VBA' 카테고리의 다른 글
[Excel][VBA] Sub Procesure 작성 실전 (0) | 2021.11.23 |
---|---|
[Excel][VBA] Sub Procesure(서브 프로시저) 다루기 (0) | 2021.11.23 |
[Excel][VBA] 특정셀 찾기 (0) | 2021.11.22 |
[Excel][VBA] 코드 실행 순서 제어 (0) | 2021.11.22 |
[Excel][VBA] 입출력 함수 (0) | 2021.11.22 |
- Total
- Today
- Yesterday
- comment.text
- function함수 예외
- ProtectStructure
- 사용자 정의 함수 사용 예
- 워크시트 함수 재계산
- 개체
- inputbox
- EnableCancelKey
- 사용자 정의 함수 재계산
- Option Compare Text
- Function Procesure
- 프로시저 작성 실전
- 적용 범위
- 원본 데이터
- vba
- 프로시저 호출
- 차트 서식변경
- bubble sort
- WorkSheet Sort
- Application.InputBox
- Screenupdating
- 강제 재계산
- 함수 재계산
- 함수 프로시저
- 참조
- Excel
- 사용자 정의 함수
- 차트 레이블 추가
- 배열
- for each
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |