반응형
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
다음 코드는 텍스트 문서의 각 줄을 순환하여 범위에서 인쇄합니다.H12
UI 시트에서 아래로 이동합니다.
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
반응형
'programing' 카테고리의 다른 글
상위 구성 요소를 통해 pinia 저장소 액세스 (0) | 2023.06.16 |
---|---|
마이그레이션을 추가해도 작동하지 않고 유용한 오류 메시지가 표시되지 않음 (0) | 2023.06.16 |
dll 옆에 있는 xml 파일의 용도는 무엇입니까? (0) | 2023.06.16 |
VB.NET에서 정적 메서드 구현 (0) | 2023.06.16 |
Django 및 mysql 커넥터 python의 특성 오류 (0) | 2023.06.16 |