데이터가 45만개 정도 되는 대량의 텍스트 파일이다.
원래 텍스트파일 불러오기는 1행으로 불러와지는데
이것을 수정하여 A열에만 나열하도록 했다.
코드를 약간 수정하면 100열이나 1000열 기준으로 텍스트파일을 불러올 수 있다.
Option Explicit
Sub impLongTxt()
Dim rngImport As Range
Dim strFilter As String
Dim fileName As Variant
Dim i As Long
Dim r As Integer, c As Integer
Dim strData As String
Dim strChar As String
Dim strText As String
'기존자료 삭제 및 화면 업데이트 중지
Application.ScreenUpdating = False
Sheets(1).UsedRange.ClearContents
'엑셀파일의 위치와 동일한 경로, 파일불러오기 시작점
ChDir ThisWorkbook.Path
Set rngImport = Sheets(1).Range("A1")
'텍스트파일 불러오기
strFilter = "텍스트파일 (*.txt), *.txt"
fileName = Application.GetOpenFilename(FileFilter:=strFilter, Title:="텍스트 파일 선택", MultiSelect:=False)
'파일선택 취소시 매크로 종료
If TypeName(fileName) = "Boolean" Then Exit Sub
Open fileName For Input As #1
Do While Not EOF(1)
Line Input #1, strData
'1열씩 자료 가져오기
For i = 1 To Len(strData)
strChar = Mid(strData, i, 1)
If c = 1 Then
c = 0
Set rngImport = rngImport.Offset(r + 1, 0)
End If
'텍스트파일이 빈칸일 경우 뛰어넘고, 빈칸이 아니면 텍스트내용을 계속 쌓아감
If strChar = " " Or i = Len(strData) Then
rngImport.Offset(r, c) = strText
c = c + 1
strText = ""
Else
If strChar <> " " Then strText = strText & strChar
End If
Next i
c = 0
r = r + 1
Loop
Close #1
'서식 지정 및 마무리
Columns(1).SpecialCells(2).Select
Selection.NumberFormatLocal = "0.0_ "
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "작업을 완료하였습니다."
End Sub
'VB(A)' 카테고리의 다른 글
숫자만 인식하기 (0) | 2015.02.17 |
---|---|
중복값 제외하고 수량 합산하기 (0) | 2015.02.16 |
시간대별 근무인원 구하기 (0) | 2015.02.10 |
사용자정의 함수 (0) | 2015.02.07 |
일정 간격으로 내용 복사 (0) | 2015.02.03 |