텍스트파일을 엑셀로 읽어서 정렬
엑셀 VBA 에서 텍스트 파일을 읽어들여서 셀을 나눠서 작업하기 위한 용도의 VBA Code.
현재 자료 하단에 자료를 추가하고 싶다면
ActiveSheet.UsedRange.Clear 를 주석처리하고
iRow = Cells(Rows.Count, "A").End(3).(2).Row
라고 해주면 마지막 셀 하단에 자료가 추가가 됩니다.
구분자로 분리하고 싶지 않다면
varTemp = Split(openTxt, ";") '// 구분자로 읽어들인 하나의 행을 나눠서 배열에 저장
Cells(iRow, 1).Resize(, UBound(varTemp) + 1) = varTemp '// 읽은 1행을, 엑셀 셀에 입력
대신에 Cells(iRow, 1).Value = openTxt '// 읽은 1행을, 엑셀 셀에 입력
Sub TextFile_To_ExcelRead()
Dim openTxt As String
Dim fileName As String
Dim varTemp As Variant
Dim fileHandle As Integer
Dim iRow As Long
fileName = Application.GetOpenFilename("Text Files(*.txt),*.txt, Add-in Files (*.csv), *.csv", , "Please select text file...")
If fileName = "False" Then '//취소 선택 시 매크로 종료
MsgBox "취소버튼이 선택되었습니다"
Exit Sub
End If
ActiveSheet.UsedRange.Clear '// 현재 활성화된 시트에 있는 기존 데이터 전부 삭제
iRow = 1 '// 활성화된 시트데이터를 지우지 않고 아래에 추가하고 싶다면 ??
Application.ScreenUpdating = False '// 화면 업데이트 일시 정지
fileHandle = FreeFile '// 사용 가능한, 파일 핸들 번호 구하기
Open fileName For Input As fileHandle '// 파일 열기
'// 텍스트 파일 한 줄씩 읽기 (한글 영문 모두 가능)
Do While Not EOF(fileHandle) '// 파일의 끝까지 반복
Line Input #fileHandle, openTxt '// 읽은 1줄을 변수 openTxt 에 대입
'// Line Input#문은 열려 있는 순차 파일에서 하나의 행을 읽어서 String 변수에 저장
varTemp = Split(openTxt, ";") '// 구분자로 읽어들인 하나의 행을 나눠서 배열에 저장
Cells(iRow, 1).Resize(, UBound(varTemp) + 1) = varTemp '// 읽은 1행을, 엑셀 셀에 입력
iRow = iRow + 1 '// 다음 행에 입력하기 위해 행번호 증가
Loop
Close fileHandle '// 위에서 연 파일 닫기
Range("C1").Select
Selection.AutoFilter '// 첫줄 자동필터, 만약 필터가 적용되었다면 해제가 됨
Columns("A:B").HorizontalAlignment = xlCenter '// A열,B열 가운데 정렬
Rows(1).HorizontalAlignment = xlCenter '// 1행만 가운데 정렬
Columns.AutoFit '// 열너비 자동 맞춤
End Sub
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 셀 분리 활용 (0) | 2014.09.17 |
---|---|
[DOS] 폴더와 하위 폴더에 있는 파일명들을 텍스트로 추출하기 (0) | 2014.09.10 |
[VBA] 지정한 열만 텍스트 파일로 내보내기 (0) | 2014.08.28 |
[VBA] 현 시트내용을 서식 포함 여러개 파일로 분할 저장 (0) | 2014.08.27 |
[VBA] 노래가사 파일 내보내기 (0) | 2014.08.24 |