OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VBでのテキストファイルの 読み込み & 書き出し について

  • 困ってます
  • 質問No.230557
  • 閲覧数729
  • ありがとう数0
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 67% (55/82)

テキストファイルの中味を全部読み込んで、テキストボックスに表示するというコードをOpenステートメントを使って書いています。

その際、1つの種類のデータを1つのテキストファィルとして書き出し&読み込み
しているのですが、これですと種類が増えていくとともにテキストファイルの
数もどんどん増えてしまい効率が悪いです。

で、それらを1つのテキストファイルにまとめておいて、中をセクションに
区切って、それを読み込み&書き出しする方法はあるのでしょうか?

データが1行ですと分かるのですが、それぞれが長いテキストデータを1つの
テキストファイルに区切って書き出し&読み込みする方法が分かりません。

どなたか教えてください!!!!!!!
よろしくお願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 58% (190/327)

例えば、セクションの区切りについて、次のようなルールにしたとします。

行頭に[SectionXXX]という文字列がある事。
XXXはセクションを表す3桁の数字
この場合は、000から999まで有効ですね。

順番に取得する場合は、数字の手前までの文字列を比較して、ループを回せば、数字がいくつであっても全部取り込めます。

特定のセクションを指定して取り出す場合は、予めどこかでその数字(これは文字列として格納する)を指定する変数にぶち込んで、ループの中で更に比較して、該当する物だけを取り出せばよいと。
この場合、比較する文字列は、
"[Section" & strNum
みたいな感じになりますね。

この変数には、例えばテキストボックスにセクションNoを入力するようにしておいて、この値があったらこの変数にいれるとか、そんな風にすれば、よさげです。

どうでしょうか?
補足コメント
fujiyama2002

お礼率 67% (55/82)

回答ありがとうございます。う~ん、正直難解ですねぇ。
IfとLoopを組み合わせるというところがどうも・・・。

勉強が足りなくてすみません。
本を読みながら試行錯誤してみます。
投稿日時 - 2002-03-07 22:11:43
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル11

ベストアンサー率 58% (190/327)

やり方というか、やり方自体自分で決めれば済む事だと思いますよ。 例えば、セクションの区切りの行には、行頭に(本文で使われないような)特定のパターンを入れておいて、読み込むときには、一つのセクションを読み出すのに、そのパターンを判定するループにすればいいでしょう。 同様に書き出す場合も、一つのセクションを書き込んだら、そのパターンを含んだ区切りをいれるとか。 どうでしょうか? ...続きを読む
やり方というか、やり方自体自分で決めれば済む事だと思いますよ。

例えば、セクションの区切りの行には、行頭に(本文で使われないような)特定のパターンを入れておいて、読み込むときには、一つのセクションを読み出すのに、そのパターンを判定するループにすればいいでしょう。
同様に書き出す場合も、一つのセクションを書き込んだら、そのパターンを含んだ区切りをいれるとか。

どうでしょうか?
補足コメント
fujiyama2002

お礼率 67% (55/82)

回答いただき、ありがとうございます。
現在、ninja972さんに質問させていただいた内容で悩んでいます。
ご助言を!!!!!!!
投稿日時 - 2002-03-07 20:20:42


  • 回答No.2
レベル6

ベストアンサー率 0% (0/2)

you-mさんと同様に自分も区切り文字 [Excel]や[Access]といった括弧書きで 区別しております。 ...続きを読む
you-mさんと同様に自分も区切り文字
[Excel]や[Access]といった括弧書きで
区別しております。
補足コメント
fujiyama2002

お礼率 67% (55/82)

セクションの区切りを入れておいて読み込むという考え方は理解できるのですが、
どうすればいいのかが分かりません。

例えば、

[section 1]
データ1データ1データ1データ1データ1データ1
データ1データ1データ1データ1データ1データ1
データ1データ1データ1データ1データ1データ1
データ1データ1データ1データ1データ1データ1

[section 2]
データ2データ2データ2データ2データ2データ2
データ2データ2データ2データ2データ2データ2
データ2データ2データ2データ2データ2データ2

というテキストファイルがあったとして、[section 1]の部分の読み込みは

Open App.Path & "\test.txt" For Input As #1
Do Until data = "[section 2]"
Line Input #1, data
alldata = alldata & data & vbCrlf
Loop
Close #1
aaa = Replace(alldata, "[section 2]", "")
bbb = Replace(aaa, "[section 1]", "")
text1.text = bbb

    (初心者なので変なコードですが・・・)

というふうに、次にくるセクションの頭までを指定して読み込めば良いと思う
のですが、[section 2]の部分だけを読み込みたい時のコードが全く分かりません。
上記のやり方では、先頭のセクションだけを読み込むことは可能ですが、
以降のセクションだけを抜き出すのはできません。
ここが今ひとつ理解できないところです。

初心者なもので、へっぽこですみません。
どうか教えてください!!!
お願いいたします。
投稿日時 - 2002-03-07 20:17:44
  • 回答No.4
レベル6

ベストアンサー率 0% (0/2)

fujiyama2002と同じく文字列の連結でデータを取得しています。 自分はセクションの数が限られている為、一度配列にセットし 後から再度取りこむ形を取っています。 数が決められない場合はyou-mさんがおっしゃる様に、 先頭より順読みし、ループとIF文で取得すれば・・・ と思います。                           以上
fujiyama2002と同じく文字列の連結でデータを取得しています。
自分はセクションの数が限られている為、一度配列にセットし
後から再度取りこむ形を取っています。
数が決められない場合はyou-mさんがおっしゃる様に、
先頭より順読みし、ループとIF文で取得すれば・・・
と思います。

                          以上
  • 回答No.5
レベル6

ベストアンサー率 0% (0/2)

申し訳ありません。 呼び捨ててしまいました。 ごめんなさい... ...続きを読む
申し訳ありません。
呼び捨ててしまいました。
ごめんなさい...
補足コメント
fujiyama2002

お礼率 67% (55/82)

いえいえどういたしまして。

みなさんのご意見を参考にして、私なりに考えてみました。
同じセクションの行頭に特定の文字を挿入しました。


[Section1]デ-タ1デ-タ1デ-タ1デ-タ1デ-タ1
[Section1]デ-タ1デ-タ1デ-タ1
[Section1]デ-タ1デ-タ1

[Section2]デ-タ2デ-タ2デ-タ2デ-タ2
[Section2]デ-タ2デ-タ2

[Section3]デ-タ3デ-タ3デ-タ3デ-タ3デ-タ3
[Section3]デ-タ3デ-タ3デ-タ3デ-タ3デ-タ3デ-タ3
[Section3]デ-タ3デ-タ3デ-タ3デ-タ3デ-タ3デ-タ3

で、例えば[Section2]の文字列だけを抜き出してテキストボックスに表示
するコードを下のようにしてみました。

Dim aa, readdata, bb As String
Open App.Path & "\" & "test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, aa
bb = Left(aa, 6)
If bb = "[Section2]" Then
readdata = readdata & aa & vbCrLf
End If
Loop
Close #1
Text1.Text = readdata

こんな感じでどうでしょうか?
多分もっと効率のいいコードがあるかも知れませんが、へっぽこの私には
これが限界です。
投稿日時 - 2002-03-08 23:21:20
  • 回答No.6
レベル10

ベストアンサー率 42% (79/186)

正直目的とあうかどうか分かりませんが、INIファイルを使用するのもひとつの選択肢だと思います。 INIファイルだと、APIを使用すれば、比較的楽に属性をテキストファイルに保存することができますよ。
正直目的とあうかどうか分かりませんが、INIファイルを使用するのもひとつの選択肢だと思います。
INIファイルだと、APIを使用すれば、比較的楽に属性をテキストファイルに保存することができますよ。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ