출처: http://m.blog.naver.com/rosa0189/60154415797
텍스트 파일 불러올 경우가 가끔 있으므로 미리 텍스트파일 불러오는 기본코드를 작성해 놓음.
intNo = 1 이라고 하면 모든 행을 불러오고, 1보다 클경우 intNo 숫자 만큼 행을 건너뛰면서 텍스트 파일을 불러온다.
매크로 실행 전 (Sheet2는 비어 있는 상태임) 매크로 실행 후 결과 파일 (Sheet2)
매크로 실행 후 나타나는 파일 선택창 (가져오려는 텍스트파일을 선택하면 됨)
Option Explicit
Sub import_Text_With_Offset() '특정 행을 건너 뛰며 데이터 가져오기
Dim strInput As String '각 행을 읽어서 저장할 변수
Dim cnt As Long '카운터로 사용할 변수
Dim strName As String '읽어들일 파일이름 넣을 변수
Dim r As Long '행번호 늘려갈 변수
Dim intNo As Integer '몇번째 행마다 출력 할지 결정할 변수
Application.ScreenUpdating = False '화면 업데이트 (일시)중지
Sheets(2).UsedRange.ClearContents 'Sheet2의 기존 데이터 삭제
strName = Application.GetOpenFilename("텍스트파일,*.txt;*.csv;*.prn", _
Title:="텍스트파일") '파일을 열어서 파일명을 변수에 넣음
If strName = "False" Then '취소(Cancel) 선택 시
MsgBox "취소(Cancel)하여 중단합니다.", 64, "파일선택 오류" '오류메시지 출력
Exit Sub '매크로 중단
End If
Open strName For Input As #1 '선택한 파일 열기
cnt = 1 '카운트 1부터 시작
r = 1 '1행부터 시작
intNo = 3 '3번째 행마다 출력.
Do Until EOF(1) '파일의 마지막 행까지 실행
Line Input #1, strInput '각 행을 읽어서 strInput에 저장
If cnt Mod intNo = 0 Then '카운터를 intNo로 나눈 나머지가 0이면
Sheets("Sheet2").Cells(r, 1) = strInput '입력받은 데이터를 각 셀에 뿌림
r = r + 1 '행번호 1씩 늘려감
End If
cnt = cnt + 1 '카운터 1씩 늘려감
Loop '무한 반복
Close #1 '파일 닫기
End Sub
'MultiSelect:= True일 경우
Dim fileName As Variant '모든 파일 넣을 배열 변수
fileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"텍스트파일을 선택", MultiSelect:=True) '텍스트 파일을 선택
If TypeName(fileName) = "Boolean" Then Exit Sub '취소 선택 시 매크로 종료
For i = 1 To UBound(fileName) '선택한 파일 개수만큼 반복
Open fileName(i) For Input As #1 '각 파일을 열기
Close #1 '열은 파일 닫기
Next i
'Tab으로 구분된 파일 불러오기
Option Explicit
Sub import_Tab_Limited_Textfile()
Dim fileName As String '파일 이름을 넣을 변수
Dim strInput As String '각 행의 불러온 문자 넣을 변수
Dim varTemp As Variant '각 행을 tab으로 쪼개어 넣을 배열 변수
Dim r As Long '행(r)ow을 1씩 늘려갈 변수
Dim c As Integer '열(c)olumn을 1씩 늘려갈 변수
Application.ScreenUpdating = False '화면 업데이트 (일시)중지
fileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"탭으로 구분된 텍스트파일") '파일을 열어서 파일명을 변수에 넣음
If fileName = "False" Then Exit Sub '취소를 선택시 매크로 종료
Open fileName For Input As #1 '첫 번째 파일을 열기
Line Input #1, strInput '각 행을 불러와 strInput에 넣음
Do Until EOF(1) '파일의 마지막까지 실행
varTemp = Split(strInput, vbTab) '불러온 행을 tab으로 나누어 배열에 넣음
r = r + 1 '행을 1씩 늘려감
For c = LBound(varTemp) To UBound(varTemp) '배열 개수만큼 반복
Cells(r, c + 1) = Val(varTemp(c)) '배열값을 셀에 뿌림
Next c
'Cells(r, UBound(varTemp) + 1) = varTemp '문자인 경우 윗줄의 코드 대신 사용
Line Input #1, strInput '다음 행을 불러옴
Loop '무한 반복
Close #1 '불러온 파일 닫기
End Sub
'특정 데이터가 있는 행부터 데이터 가져오기
Sub import_Textfiles_From_Certain_Row()
Dim strName As String '검색할 단어를 넣을 변수
Dim lngNo As Long '전체 가져올 행을 넣을 변수
Dim fileNames As Variant '모든 파일 넣을 배열 변수
Dim i As Integer '반복 구문에 사용할 변수
Dim strInput As String '각 행의 불러온 문자 넣을 변수
Dim varTemp As Variant '각 행을 tab으로 쪼개어 넣을 배열 변수
Dim r As Long '행(r)ow을 1씩 늘려갈 변수
Dim cnt As Integer '행 개수 카운터로 사용할 변수
Dim c As Integer '열(c)olumn을 1씩 늘려갈 변수
Dim blnTF As Boolean '시작행 판단한 변수
Application.ScreenUpdating = False '화면 업데이트 (일시) 중지
ActiveSheet.UsedRange.ClearContents '기존 데이터 삭제
strName = "found" '검색할 단어를 변수에 넣음
lngNo = 3 '검색 일치한 행부터 가져올 행개수
fileNames = Application.GetOpenFilename("텍스트파일,*.txt;*.csv;*.prn", _
Title:="텍스트 파일을 선택", MultiSelect:=True)
'파일을 열어서 파일명을 변수에 넣음
If TypeName(fileNames) = "Boolean" Then Exit Sub '취소 선택 시 매크로 종료
For i = 1 To UBound(fileNames) '선택한 파일 개수만큼 반복
Open fileNames(i) For Input As #1 '각 파일을 열기
Line Input #1, strInput '각 행을 불러와 strInput에 넣음
Do Until EOF(1) '파일의 마지막까지 실행
If InStr(strInput, strName) Then '행에 strName 포함되어 있으면
blnTF = True 'blnTF 를 참으로 바꿈
End If
If blnTF = True Then 'blnTF가 참인 경우에
varTemp = Split(strInput, vbTab) '불러온 행을 tab으로 나누어 배열에 넣음
r = r + 1 '행을 1씩 늘려감
cnt = cnt + 1 '카운터 1씩 늘려감
For c = LBound(varTemp) To UBound(varTemp) '배열 개수만큼 반복
Cells(r, c + 1) = varTemp(c) '배열값을 셀에 뿌림
Next c
End If
If cnt = lngNo Then Exit Do 'lngNo 만큼 행을 가져오면 do 구문 종료
Line Input #1, strInput '다음 행을 불러옴
Loop '무한 반복
cnt = 0 '재사용 위하여 카운터 초기화
blnTF = False '시작 판단행 변수를 초기화
Close #1 '열은 파일 닫기
Next i
End Sub
'기타' 카테고리의 다른 글
[엑셀] 엑셀 vlookup 함수 여러개 조건 만족값 찾기예제(index,match) (0) | 2016.09.02 |
---|---|
[엑셀] VBA에서 Text 파일 저장하기 (UTF-8 로 저장하기) (0) | 2016.08.25 |
[엑셀] 엑셀 VBA 예제5 값에 따라 셀 색깔 바꾸는 엑셀 매크로 (0) | 2016.08.25 |
[엑셀] 엑셀 VBA 예제1 텍스트 파일(.txt) 엑셀에 입력하기 (0) | 2016.08.25 |
[엑셀] 엑셀 #N/A안나오게 하는 방법 (0) | 2016.07.29 |