0

Excel 2003を使用していますが、マクロに次のコードがあります。

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

これを実行すると、

「ランタイムエラー:5」

OpenTextFileでの無効なプロシージャ呼び出しまたは引数

4

4 に答える 4

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
于 2012-06-15T16:27:07.417 に答える
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
于 2012-06-15T14:32:24.600 に答える
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
于 2012-06-15T14:18:49.907 に答える
-1

Excel 2007 を使用していますが、ほぼ同じコード スニペットで同じ問題が発生しました。「Microsoft Scripting Runtime」を有効にすると解決するはずです(メインメニュー>ツール>参照)。

于 2014-10-14T13:59:37.827 に答える