投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/10/6 03:25:37
> このa.txtの内容を先頭から40文字
Imports System.IO
Imports System.Text
Module Module1
    Sub Main()
        Dim all As String = File.ReadAllText("D:\a.txt", Encoding.Default)
        Dim s As String = all.Substring(40)
        MsgBox(s)
    End Sub
End Module


> 構文エラー(式は値を生成しません)が発生します。
Function と間違えて、Sub なメソッドの戻り値を受け取ろうとしてはいませんか?
たとえば下記のように呼び出した場合、「BC30491:式は値を生成しません。」のエラーとなります。
Dim r = FileOpen(FileNum,"D:\a.txt",OpenMode.Input)


> 構文は b = Input(40,FileNum)と記述しています(bは文字型で宣言しています)
文字型(Dim b As Char)は、1 文字のみを扱う型ですので、今回は
文字列型(Dim b As String) を使うべきですね。

> シーケンシャルファイルの指定文字数の読出しは出来ないのでしょうか??
できますよ。

ただ、VB6 互換命令である FileOpen / FileClose を使う方法よりも、
.NET らしく、System.IO.File を使う方法をお奨めしておきます。

たとえばデータを一行ずつ読み込む場合、従来の Line Input # ステートメントに相当する
LineInput メソッドを利用することができますが、現在はそれを使うよりも、
File.ReadAllLines メソッドあるいは File.ReadLines メソッドを用いる方が扱いやすいと思います。
(あるいは、FileStream を使うとか)