programing

vba를 사용하여 전체 텍스트 파일 읽기

starjava 2023. 6. 16. 21:16
반응형

vba를 사용하여 전체 텍스트 파일 읽기

저는 vba를 사용하여 텍스트 파일을 읽으려고 합니다.나는 아래 코드를 시도했습니다.

Open "C:\tester.txt" For Input As #1
Worksheets("UI").Range("H12").Value = Input$(LOF(1), 1)
Close #1

이 프로그램을 실행하면 오류가 발생합니다.

런타임 오류 '62'입니다.파일의 끝을 지나 입력합니다.

텍스트 파일의 내용은 다음과 같습니다.

COM10을 열 수 없습니다. 연결되어 있는지 확인하십시오.
그리고 다른 것들.
그리고 더 많은 것들
훨씬 더 많은 것들

도움을 주셔서 미리 감사드립니다.

셀 단위로 루프하지 않고 전체 파일을 변형 배열로 읽은 다음 단일 샷에 덤프할 수 있습니다.

경로 변경C:\temp\test.txt알맞도록

Sub Qantas_Delay()
Dim objFSO As Object
Dim objTF As Object
Dim strIn 'As String
Dim X

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTF = objFSO.OpenTextFile("C:\temp\test.txt", 1)
strIn = objTF.readall
X = Split(strIn, vbNewLine)
[h12].Resize(UBound(X) + 1, 1) = Application.Transpose(X)
objTF.Close

End Sub

다음 코드는 텍스트 문서의 각 줄을 순환하여 범위에서 인쇄합니다.H12UI 시트에서 아래로 이동합니다.

Sub ImportFromText()
    Open "C:\tester.txt" For Input As #1
    r = 0
    Do Until EOF(1)
        Line Input #1, Data
        Worksheets("UI").Range("H12").Offset(r, 0) = Data
        r = r + 1
    Loop
    Close #1
End Sub

VBA를 좋아하지 않는 사람들이 명시적 변수를 구성한 다음 데이터를 전송하는 데 시간을 낭비하도록 약간 수정했습니다.그 일을 하도록 내버려 둬.

Function LoadFileStr$(FN$)

  With CreateObject("Scripting.FileSystemObject")

          LoadFileStr = .OpenTextFile(FN, 1).readall

        End With

End Function

brettdj의 대답, 약간 조정됨.

Public Function readFileContents(ByVal fullFilename As String) As String
    Dim objFSO As Object
    Dim objTF As Object
    Dim strIn As String

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTF = objFSO.OpenTextFile(fullFilename, 1)
    strIn = objTF.readall
    objTF.Close

    readFileContents = strIn
End Function

한 줄씩 읽기

Public Sub loadFromFile(fullFilename As String)

    Dim FileNum As Integer
    Dim DataLine As String

    FileNum = FreeFile()
    Open fullFilename For Input As #FileNum

    While Not EOF(FileNum)
        Line Input #FileNum, DataLine
        Debug.Print DataLine
    Wend
End Sub
Sub LoadFile() ' load entire file to string
' from Siddharth Rout
' http://stackoverflow.com/questions/20128115/
    Dim MyData As String
    Open "C:\MyFile" For Binary As #1
    MyData = Space$(LOF(1)) ' sets buffer to Length Of File
    Get #1, , MyData ' fits exactly
    Close #1
End Sub

더 쉬운 대안은Data>From Text속성에서 데이터를 새로 고치는 빈도를 지정할 수 있습니다.

Brettdj의 답변에 대한 Fidel의 답변은 마법의 숫자 없이 ASCII 또는 유니코드에 맞게 조정되었습니다.

Public Function readFileContents(ByVal fullFilename As String, ByVal asASCII As Boolean) As String
    Dim objFSO As Object
    Dim objTF As Object
    Dim strIn As String

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTF = objFSO.OpenTextFile(fullFilename, IOMode:=ForReading, format:=IIf(asASCII, TristateFalse, TristateTrue))
    strIn = objTF.ReadAll
    objTF.Close
    readFileContents = strIn
End Function

언급URL : https://stackoverflow.com/questions/20390397/reading-entire-text-file-using-vba

반응형