VBA 텍스트 파일 읽기(읽기, 구문분석, 가져오기)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 15, 2023

튜토리얼에서는 텍스트 파일에서 콘텐츠를 읽고 VBA 사용하여 워크시트에 붙여 넣는 방법을 보여 줍니다.

텍스트 파일 콘텐츠를 워크시트에서 읽기

텍스트 파일의 콘텐츠를 불러오는 가장 간단한 방법은 워크시트의 셀에 복사하는 것입니다.

Sub FSOPasteTextFileContent() 
    Dim FSO As New FileSystemObject
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) '텍스트 파일의 경로를 입력합니다
    
    TextString = FileToRead.ReadAll
    
    FileToRead.Close
    
    ThisWorkbook.Sheets(1).Range("A1").Value = TextString '텍스트 파일의 콘텐츠를 붙여넣을 워크시트와 셀을 지정합니다

End Sub

위의 코드는 FileSystemObject를 사용합니다. 이를 사용하려면 VB 스크립트 런타임 라이브러리에 대한 참조를 설정해야 합니다. 자세한 내용은 여기를 참조하세요.

FileSystemObject를 사용하지 않고 아래 코드를 사용하여 텍스트 파일의 콘텐츠를 붙여넣을 수 있습니다. 텍스트 파일에 줄 바꿈이 포함되어 있으면 한 줄씩 붙여넣습니다.

Sub PasteTextFileContent () 
    Dim wbExcel As Workbook, wbText As Workbook
    Dim wsExcel As Worksheet
    Set wbExcel = ThisWorkbook '텍스트 파일의 콘텐츠를 붙여넣을 Excel 파일을 지정합니다
    Set wsExcel = wbExcel.Sheets(1) '콘텐츠를 붙여넣을 워크시트를 지정합니다
    Set wbText = Workbooks.Open("C:\Test\TestFile.txt") '텍스트 파일의 경로를 지정합니다

    wbText.Sheets(1).Cells.Copy wsExcel.Cells

    wbText.Close SaveChanges:=False

End Sub

 

텍스트 파일 콘텐츠를 열별로 한 줄씩 읽기

텍스트 파일에는 여러 행과 쉼표, 세미콜론, 탭, 공백 등으로 구분된 행에 나열된 여러 요소가 있을 수 있습니다. 텍스트 파일의 콘텐츠를 올바르게 읽고 붙여넣으려면 아래 코드가 필요할 수 있습니다:

Sub PasteTextFileContentWithSeparators() 
    Dim StrLine As String
    Dim FSO As New FileSystemObject
    Dim TSO as Object
    Dim StrLineElements As Variant
    Dim Index As Long
    Dim i As Long
    Dim Delimiter as String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")

    Delimiter=", " '텍스트 파일에 사용된 구분기호입니다
    Index = 1

    Do While TSO.AtEndOfStream = False
       StrLine = TSO.ReadLine
       StrLineElements = Split(StrLine, Delimiter) 
       For i = LBound(StrLineElements) To UBound(StrLineElements)
           Cells(Index, i + 1).Value = StrLineElements(i) 'A1셀(Cell(1,1))부터 파일의 콘텐츠를 붙여넣습니다
       Next i
       Index = Index + 1
    Loop

TSO.Close

End Sub

텍스트 파일에 사용되는 구분 기호는 쉼표(“,”), 공백이 있는 쉼표(“, “), 세미콜론(“;”), 공백이 있는 세미콜론(“; “), 공백(” “), 탭(구분 기호 = vbTab) 또는 드문 경우로 다른 문자가 될 수 있습니다.

텍스트 파일을 배열로 읽기

텍스트 파일의 콘텐츠를 배열로 읽고 워크시트에 열별로 한 줄씩 붙여넣어야 하는 경우 아래 코드가 필요합니다:

Sub ReadDelimitedTextFileIntoArray()
    Dim Delimiter As String
    Dim TextFile As Integer
    Dim FilePath As String
    Dim FileContent As String
    Dim LineArray() As String
    Dim DataArray() As String
    Dim TempArray() As String
    Dim rw As Long, col As Long

    Delimiter = vbTab '텍스트 파일에 사용되는 구분기호 입니다
    FilePath = "C:\Test\TestFileTab.txt"
    rw = 1 
    
    TextFile = FreeFile
    Open FilePath For Input As TextFile 
    FileContent = Input(LOF(TextFile), TextFile)
    Close TextFile

    LineArray() = Split(FileContent, vbNewLine) '텍스트 파일에 사용되는 줄 바꿈 기호에 따라 vbNewLine을 vbCrLf나 vbLf 로 변경합니다.
    For x = LBound(LineArray) To UBound(LineArray)
        If Len(Trim(LineArray(x))) <> 0 Then
           TempArray = Split(LineArray(x), Delimiter)
           col = UBound(TempArray)
 	   ReDim Preserve DataArray(col, rw)
           For y = LBound(TempArray) To UBound(TempArray)
 	       DataArray(y, rw) = TempArray(y)
 	       Cells(x + 1, y + 1).Value = DataArray(y, rw)  'A1셀(Cell(1,1))부터 파일의 콘텐츠를 붙여넣습니다.
           Next y
        End If 
        rw = rw + 1
     Next x

End Sub

텍스트 파일의 줄 구분 기호는 캐리지 리턴과 줄 바꿈 조합일 수 있습니다. 그에 따라 vbCrLf 또는 vbLf를 사용합니다. 확실하지 않은 경우 vbNewLine을 사용하여 줄 바꿈을 표시합니다.

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기