VBA 텍스트 파일 읽기(읽기, 구문분석, 가져오기)
In this Article
이 튜토리얼에서는 텍스트 파일에서 콘텐츠를 읽고 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을 사용하여 줄 바꿈을 표시합니다.