• 締切済み

VB6でテキストファイルをCSVファイルに変換

VB6でテキストファイルをCSVファイルに変換の機能を作っていますが、 壁にぶつかりました; 項目         サイズ(byte) 1.作成日        15 2.マスタID      10 以上の2項目は固定です。 3.コード      9 4.名前1         10 5.名前n(登録数最大20個とする)19個*10byte=190 5.年齢    3 ''項目名の取得 ITR = ITR + Chr(39) + "作成日" + Chr(39)  中略 ''ファイルへの書込 ObjOutFile.Write (ITR) ITR=からはどうやって書くのかよくわからないです。 一行で出力したいので、名前は複数ある場合は、ヘッダの項目名前1、名前2、名前3のように並びたいのですが。。 詳しいかたいらしゃったら、ご教授ください。

みんなの回答

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

もう、最初の質問(1.作成日 15~)と、全然関係ないですね・・・ > そこで生成されたテキストファイルをCSVファイルに変換したいですが。 どういうテキストファイルなんですか? > のような形式表示したいのですが 「表示」?ファイル出力の話じゃないんですか? 結局何が分からないんです。 「やりたいこと」じゃ無くて「分からないこと」を具体的に教えてください。 #コレまでの、やり取りからすると、私が回答しなくても、 #そのうちご自分で「それはできました、次は~」とか言われそう・・・ #回答のモチベーション急降下・・・次も同じ状況なら・・・ #申し訳ありませんが、以降パスさせてもらいますね。

sinomori
質問者

お礼

うまく説明ができなくて、もうしわけないです。 改めて、質問させていただきます。 ありがとうございます。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> 名前の部分は > でいいかなと思いますが、 って・・・ > 名前は複数ある場合は、ヘッダの項目名前1、名前2、名前3のように並びたいのですが。。 名前の事を質問してたんじゃないんですか??? > だけでいいでしょうか。 良いか悪いかは、実際に実行して、「貴方が望んだ結果になるか?」で判断すべきことなので、なんともいえませんが・・・ とりあえず、「byteInputBuffer」や「MidMbc」や「YMD」が何かの説明も無いと、どうしようも無いんですけど・・・ また、 > MidMbc(m_InputBuffer,lFBnt,YMD+Chr(39) は、「(~)」の対応がどう見ても変ですし・・・ とりあえず 「byteInputBuffer」は、1レコード分のバイト数分のByte配列で、 > Get #1, , byteInputBuffer で、1レコード分のデータを読み込んでいて、 「MidMbc」は指定したバイト目(lFBnt?)から指定した文字数(YMDやNameが文字数?)の文字列を取り出していて、 > MidMbc(m_InputBuffer,lFBnt,YMD+Chr(39) は、単に投稿時の下記間違い。 と仮定して・・・ > ITR = ITR + "," + Chr(39) + MidMbcs(m_InputBuffer, lFBnt, Name) + Chr(39) > lFBnt = lFBnt + Name この部分を20回実行すればよさそうに見えますけど・・・ #20回直書きするか、For~Next等で20回ルー王させるかすれば・・・ > 同じ項目が別のタブにも入ってますが、値は違います。変換するときは、別のタブは改行して、表示したいですが、 いきなり出てきた「タブ」って何です? コレまでの説明には出てきませんよね? 「改行」・・・ 普通、CSV形式では「改行」は「1レコードの終わり」の意味ですけど・・・ どういう入力があったら、どういう出力にしたいんでしょう? 『具体的に』、教えてもらえませんか?

sinomori
質問者

補足

回答ありがとうございます。 今では1タブ目の情報だけ表示できるようになりました。 タブはいくつかのテキストボックスがあります。 入力して、登録すればテキストファイルが生成されます。 そこで生成されたテキストファイルをCSVファイルに変換したいですが。     項目  項目  項目 タブ1 値   値   値 タブ2 値   値 のような形式表示したいのですが 初心者ですみません よろしくお願いします

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

何がわからないのかが、良く分かりませんが・・・ 単純に、出力すればよいだけでは??? > 登録数最大20個とする と決まっているなら、 名前1、名前2、名前3、名前4、名前5、名前6、名前7、名前8、名前9、名前10、名前11、名前12、名前13、名前14、名前15、名前16、名前17、名前18、名前19、名前20 と、単純に20個、並べれば(取りあえずは)用は足りますよね・・・ もうちょっと、「何が分からない(どこの部分で行き詰っているか)」を詳しく教えてください。

sinomori
質問者

補足

はい。 えと 名前の部分は For i = 1 To 40 A = "名前" + i ITR = ITR + "," + Chr(39) + A + Chr(39) Next でいいかなと思いますが、 Do While Loc(1) < LOF(1) ITR = "" ''該当行のレコードデータの取得 Get #1, , byteInputBuffer m_InputBuffer = StrConv(byteInputBuffer, vbUnicode) lFBnt = 1 ITR = ITR + Chr(39) & MidMbc(m_InputBuffer,lFBnt,YMD+Chr(39) lFBnt = lFBnt + YMD ITR = ITR + "," + Chr(39) + MidMbcs(m_InputBuffer, lFBnt, Name) + Chr(39) lFBnt = lFBnt + Name Loop だけでいいでしょうか。 もうひとつの質問ですが、同じ項目が別のタブにも入ってますが、値は違います。変換するときは、別のタブは改行して、表示したいですが、 とんな方法あるのでしょうか。

関連するQ&A