2012-06-15 3 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. Проверьте код [здесь] (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

Прохладный! У вас есть ссылка на учебник по использованию For Binary? Это выглядит интересно. – 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» должно решить его (Главное меню> Инструменты> Ссылки), это сработало для меня.

Смежные вопросы