|
H.T さん、G-Luckさん、こんばんは。
>Textbox1にsample.txtの内容を入力したのですが、
>「レコード長が一致しない」というエラーがでてしまいます。
>誤っている個所を教えていただければうれしいです。
>
>sample.txtの内容は以下の一行のみです。
>あいうえお
テキストファイルを読み込むのにどうしてRandomモードでOpenしたでしょうか?
Openステートメントを使用してテキストファイルを読み込む場合は、
普通は、Line Input ステーメントで読み込みます。
それとも何か理由があるのでしょうか?
sample.txtが上記の例の場合だとして。
ユーザーフォーム(Userform1)には、
テキストボックス(Textbox1)を配置して下さい。
Textbox1のHeightプロパティは、事前設定で60ぐらいに設定しておいてください
UserfromのInitializeイベントではなくてShowメソッドの前でテキストボックスに
sample.txtから読み込んだ内容を設定したコードです。
Initializeがいけないと言うのではなく、いくつかサンプルコードを作ったので
説明の都合上です。
標準モジュールに
'=================================================
Sub main()
Dim FileName As String
Dim FileNo As Long
Dim Buff As String
Load UserForm1
With UserForm1
FileName = "D:\My Documents\sample.txt"
FileNo = FreeFile()
Open FileName For Input As #FileNo
Line Input #FileNo, Buff
With .TextBox1
.Text = Buff
End With
Close FileNo
.Show
End With
End Sub
とすれば、テキストファイルの内容は読み込めます。
仮にsample.txtの内容が
あいうえお
かきくけこ
この2行に増えたとしましょう。
'=====================================================
Sub main2()
Dim FileName As String
Dim FileNo As Long
Dim Buff As String
Load UserForm1
With UserForm1
FileName = "D:\My Documents\sample.txt"
FileNo = FreeFile()
Open FileName For Input As #FileNo
Do Until EOF(FileNo)
Line Input #FileNo, Buff
With .TextBox1
.MultiLine = True
.Text = .Text & Buff & vbCrLf
End With
Loop
Close FileNo
.Show
End With
End Sub
とすれば、2行が表示されるはずです。
この方法では、何か問題があるのでしょうか?
Getステートメントを使用してVbCrLfまで読み込みたいと言うなら
'===================================================
Sub main3()
Dim FileName As String
Dim FileNo As Long
Dim Buff As String
Load UserForm1
With UserForm1
FileName = "D:\My Documents\sample.txt"
FileNo = FreeFile()
Open FileName For Binary As #FileNo
Buff = String(LOF(FileNo), " ")
Get #FileNo, , Buff
With .TextBox1
.MultiLine = True
.Text = Buff
End With
Close FileNo
.Show
End With
End Sub
こんな方法で出来そうですが、テキストファイルに使用した事はありません。
以上、確認してみて下さい。
|
|