Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


58901 / 76738 ←次へ | 前へ→

【22558】Re:ファイルの内容をテキストボックスへ
発言  ichinose  - 05/2/23(水) 18:18 -

引用なし
パスワード
   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

こんな方法で出来そうですが、テキストファイルに使用した事はありません。

以上、確認してみて下さい。

0 hits

【22513】ファイルの内容をテキストボックスへ H.T 05/2/23(水) 10:50 質問
【22520】Re:ファイルの内容をテキストボックスへ G-Luck 05/2/23(水) 12:15 回答
【22558】Re:ファイルの内容をテキストボックスへ ichinose 05/2/23(水) 18:18 発言

58901 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free