注: Visual Studio を使用し、VB6 および VBA 以外でコードを作成するのは初めてです。また、IO.File を使用して問題を解決しました。
ただし、これが機能しない理由を本当に知りたいです。
Dim FSO As New FileSystemObject
Dim FSOts As TextStream
FSOts = FSO.OpenTextFile(filepath1, IOMode.ForReading, True)
While FSOts.AtEndOfStream = False
temp = FSOts.ReadLine()
MsgBox(temp)
tempcollection.Add(temp)
End While
FSOts.Close()
私のコンピューターでは動作しますが、何らかの理由で他のコンピューターでは動作しません。以前にこのオブジェクトを vb スクリプトで使用したことがありますが、その状況では 2 番目の引数は「ForReading」であり、32 ビット scrrun.dll を参照する別の IDE (FEMAP) で記述されていました。Visual Studio で、スクリプト ライブラリが syswow64 を指していることに気付きました。それが違いを生むかどうかはわかりません。すべての分散サイトは 64 ビット OS を実行し、このライブラリを持っています。いずれにせよ、使用しようとするとエラー 438 が発生します。
FSOts = FSO.OpenTextFile(filepath1, IOMode.ForReading, True)
VS では、'ForReading' だけでコンパイルすることはできません。
繰り返しますが、以前に vb6 でこのオブジェクトを使用しましたが、2 番目の引数は iomode.forreading ではなく「ForReading」でした。その状況では、問題を引き起こしているのと同じマシンで問題なく動作しました(もちろん、私のマシンを除く)。