2012-06-15 2 views
0

Excel 2003을 사용하고 있습니다. & 매크로에 다음 코드가 있습니다. 내가 이것을 실행하면VBA ReadLine 파일을 읽는 동안 오류가 발생했습니다.

Dim fs, a, retstring 
Set fs = CreateObject("scripting.filesystemobject") 
Set a = fs.OpenTextFile("C:\file.txt", ForReading, False) 
Do While a.AtEndofStream <> True 
    retstring = a.ReadLine 
Loop 
a.Close 

은, 내가 이렇게했을 때 그것은 일

"Runtime Error:5"

Invalid Procedure Call or argument at OpenTextFile

+3

상수 ForReading = 1을 정의하십시오. [here] (http://stackoverflow.com/questions/1722196/what-is-dim-fso-myfile-filename-textline-in-vba) 코드를 확인하십시오. – deusxmach1na

+0

@ deusxmach1na : 고맙습니다. 그것은 작동합니다. 내가 그것을 받아 들일 수 있도록 대답으로 넣어주십시오. – logan

답변

0

보여줍니다.

Dim fs, a, retstring 
    Set fs = CreateObject("scripting.filesystemobject") 
    Set a = fs.OpenTextFile("C:\Users\228319\Desktop\file.txt", 1, False) 
    Do While a.AtEndofStream <> True 
    retstring = a.readline 
    Loop 
    a.Close 
2

먼저 상수 ForReading을 정의해야합니다. 또한 ForWriting 및 ForAppending 상수를 정의 할 수 있습니다.

Dim fs, a, retstring 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set a = fs.OpenTextFile("C:\file.txt", ForReading, False) 

Do While a.AtEndofStream <> True 
    retstring = a.readline 
Loop 
a.close 
2

fso는 느린 것으로 간주됩니다. 다음은 텍스트 파일을 더 빨리 읽을 수있는 방법입니다.

Sub Sample() 
    Dim MyData As String, strData() As String 
    Dim i as Long 

    '~~> Read the entire file in 1 go 
    Open "C:\MyFile.Txt" For Binary As #1 
    MyData = Space$(LOF(1)) 
    Get #1, , MyData 
    Close #1 
    strData() = Split(MyData, vbCrLf) 

    For i = LBound(strData) To UBound(strData) 
     Debug.Print strData(i) 
    Next 
End Sub 
+0

쿨! 바이너리를 사용하는 방법에 대한 자습서 링크가 있습니까? 재미있어 보여. – deusxmach1na

+0

@ deusxmach1na : 웹상에 많은 것들이 있습니다. 여기에 내가 처음 온 것입니다 ... http://www.vb6.us/tutorials/reading-and-writing-binary-files-visual-basic –

+0

@SiddharthRout VB에서 제공 한 링크입니다. 그게 VBA에서도 효과가 있니? – logan

-1

저는 Excel 2007을 사용하고 있으며 거의 ​​동일한 코드 스 니펫과 동일한 문제가 있습니다. 'Microsoft Scripting Runtime'을 사용 설정하면 문제를 해결할 수 있습니다 (기본 메뉴> 도구> 참조).

관련 문제