VB(A)

대량의 텍스트파일을 1열로 불러오기

당근쨈 2015. 2. 16. 12:41

데이터가 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


텍스트파일 가져오기.xlsm


1234.txt




'VB(A)' 카테고리의 다른 글

숫자만 인식하기  (0) 2015.02.17
중복값 제외하고 수량 합산하기  (0) 2015.02.16
시간대별 근무인원 구하기  (0) 2015.02.10
사용자정의 함수  (0) 2015.02.07
일정 간격으로 내용 복사  (0) 2015.02.03