• ベストアンサー

csvファイルのデータの一部を取り出したい

こんばんは。 VBでcsv形式のファイルの一部を取り出したいのですが、 例えば、下の3 行、3 列のデータが CSV 形式で保存されているファイルで First Name,Last Name,HireDate Nancy,Davolio,10-22-91 Robert,King,10-23-91 その中の"Nancy"だけを取り出して、テキストボックスに入れたいのですが 一部だけ取り出すことってできるのでしょうか? 教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • gokkun
  • ベストアンサー率47% (115/244)
回答No.2

>CSVファイルを開いて1行目、2行目など行を指定して、内容を取り出すことも >可能なのでしょうか? こうしたらどうでしょう。 CSV形式ファイルを"file.csv"とします。 Dim aaa As String Dim cnt As Long Open "file.csv" For Input As #1 cnt = 0 Do While Not EOF(1) Line Input #1, aaa cnt = cnt + 1 '<-----何行目かを数える Select Case cnt '1行目の場合、テキストボックス1に設定 Case 1 Text1.Text = Left$(aaa, InStr(aaa, ",") - 1) '2行目の場合、テキストボックス2に設定 Case 2 Text2.Text = Left$(aaa, InStr(aaa, ",") - 1) '3行目の場合、テキストボックス3に設定 Case 3 Text3.Text = Left$(aaa, InStr(aaa, ",") - 1) End Select Loop Close (1)

mesuinugonta
質問者

お礼

ご返事ありがとうございます。 詳しいご説明本当にありがとうございました。 すごくわかりやすくて、とても参考になりました。 教えていただいたのをもとに、プログラムを完成することができました。

その他の回答 (2)

  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.3

1行取出した後の文字の分割ですが、VB6なら splitを使うと楽です。 dim strBuf() as string dim ........ ........ 'strTextは、取出した1行 'カンマで分割 strBuf=split(strText,",") 'strBuf(0)などで使用できます。 どうでしょうこんなんで?

mesuinugonta
質問者

お礼

ご返事ありがとうございます。 splitがあるなんて知りませんでした。 早速参考にさせていただきます。 ありがとうございました。

  • gokkun
  • ベストアンサー率47% (115/244)
回答No.1

Dim aaa As String aaa = "Nancy,Davolio,10-22-91" Text1.Text = Left$(aaa, InStr(aaa, ",") - 1) これでテキストボックスに"Nancy"という文字が入ります。 あとはこれを応用すればできます。

mesuinugonta
質問者

補足

ご返事ありがとうございます。 Left$()関数を使う方法があったんですね。 そうしたら、 CSVファイルを開いて1行目、2行目など行を指定して、内容を取り出すことも 可能なのでしょうか?

関連するQ&A

  • 【VB6】CSVファイルの内容の条件設定をして表示

    【VB6】CSVファイルの内容の条件設定をして表示 お世話になります。 VB6で、テキストボックスにCSVの内容を表示するプログラムを作成したのですが、 CSVの一部の行だけをif文で検索をかけるような内容を追加しようとしておりますが、良い方法はございますでしょうか。 例えば、Excelで開く所のA列が「日付」の項目であり、1/1から3/1までのCSVの内容を表示…といった具合です。 CSVをテキストボックスに表示させるプログラムは、下記サイトを参考にしています。 http://hanatyan.sakura.ne.jp/(VB6.0関係>ファイル操作関係>です) 参考になるサイトがございましたらお教え下さい。よろしくお願い致します。

  • VBでCSVファイルを読み込む方法(最速方法は?)

    こんにちは。VB6.0(SP5)、Windows2000でVBの勉強をしています。 VBのテキストボックスに入力したデータをCSVファイルに保存する時、もうすでに登録されていたらエラーを出したいと思っています。 そこで、CSVファイルを読み込み、同じかどうか確認したいと思っていますが、どの方法で処理するのが早く効率的なのでしょうか。 ファイル形式・・・csvで50行×3列 ----------- aaa,1,2 bbb,3,4 ・・・50行程度のデータ ----------- テキストボックスに入力したデータ・・・例えば"ccc" 1.Open ファイル名 For Input As #fileNum でEOFまで読み、配列に入れ、その後1列目のデータが"ccc"かどうか確認する 2.Open ファイル名 For Input As #fileNum で読みながら、1列目のデータが"ccc"かどうか確認し、EOFまで繰り返す 3.DAOを利用し、SELECT文であるかないか確認する(DAO2.5) の3つの方法を試してみましたが、あるパソコンで行うとDAOが早いのに別のパソコンだとDAOが1番遅いなど、どれが効率的なのかよくわかりませんでした。 このような処理をしたい場合、みなさんはどのような方法で処理されますか? 上記以外の方法でも構いません。アドバイスよろしくお願いします。

  • 【VAB】 エクセルファイルからCSVファイルをインポートするには

    お世話になります 実行可能か、わからず質問させて頂きます。 ■概要 ・CSVファイルをエクセルファイルにインポートしたいです ■設置 ・ユーザーフォームにテキストボックス、参照ボタン、実行ボタン を生成 ■動き ・参照ボタンをクリックするとダイアログボックスでCSVを選ぶ ・選んだあて先がテキストボックスに記載される ・実行ボタンでCSVをエクセルのシートに貼り付け (このとき貼り付ける列はVB内で決めておきたい、1,4,5,6,9列を貼り付けるなど) わかる方ご教授よろしくお願い申し上げます

  • CSVファイルを読み込む

    .net VB 2010 初心者です。VB 6.0は、少々分かります。 よろしくお願い致します。 .net VB 2010を使用して、CSVファイルを読み込みたいのです。 列は固定、行は可変です。 配列で、buf(行,列)のように読み込みたいのです。 これだと、10行、3列目と実際とイメージが合致するからです。 これは、どのように実現可能か教えてください。 buf(10,3)ではなく、もっと良い方法があるのであれば、そちらをよろしくお願い致します。 列は、1列目:No.、2列目:フルネーム、3列目:略語、4列目:更新日 となっています。 なので、1行目のフルネームの取り出し、2行目の略語の取り出しでもOKです。 どうぞよろしくお願い致します。

  • 複数CSVファイルからデータ抽出

    CSVファイルのA列(行は問いません)の文字が転記シートのA列(行は問いません)と一致していたら、転記シートのA列が一致した行の空白に、左から順にCSVファイルのA列が一致した行のF列の値を書き込む。CSVファイルの1行A列を転記シートのF列の値を書き込んだ列の1行目に書き込む。 できれば、書き込んだ値はCSVファイルから消したいです。 コピペでやっていたのですが、ずれていてどうしようもなくなりました。 CSVファイル一つ当たり、4000行ほどあり、ファイルは200弱あります。 プログラムを組んでくださると、ありがたいのですが。 質問というよりお願いになってしまいますが、よろしくお願いします。

  • csvファイルのデータ変換について

    OS:windows2000pro VB:VB6.0sp5 c:\data.csv(カンマ区切) のデータ(全6列)で 1列目,2列目,3列目,4列目,5列目,6列目 [変換前(全6列)] abc,a1,aあ b2,3c,4d5e (1行目) ccc,c3,aあ い,3c,4d5e (2行目) bbc,b2,あ b2a,c3,d5e4 (3行目) [変換後(全6列)] abc,a1,"aあ b2",3c,"4d5e" (1行目) ccc,c3,"aあ い",3c,"4d5e" (2行目) bbc,b2,"あ b2a",c3,"d5e4" (3行目) 上記の様に 3列,6列目を「"・・・"」ダブルコーテイションで 囲い(変換し)、c:\data_after.csvというファイル名で 保存する為のプログラムをご教示ください よろしくお願いいたします

  • csv ファイルのデータを文字列として開く

    csv ファイルを開いた時に、最初から 全てのセルの 「セルの書式設定 > 分類」を「文字列」にすることは出来ますか? 一度、拡張子を txt に変えて 「テキスト ファイル ウィザード」 「列のデータ形式」を文字列にするのは知っているのですが、 ・拡張子を変える ・エクセルを開く ・ファイルを選ぶ ・全ての列を選択 ・文字列にする と非常に面倒なので csv ファイルのままでファイルを開いたら 最初から文字列にする方法を探してます。 お願いします。

  • csvファイルからの変換

    csvファイルに20030627と、テキストで数字が入っています。 これをExcelファイルに変換すると、形式が日付にならないので、2003/06/27となるようにしたいのですが(文字列ではなく)、簡単にはいきません。 いい変換方法はないでしょうか。

  • 大量データ(csv)ファイルのインサート

    1分に1回レコードが出力されたログファイルがあります。 これはCSV形式のファイルです。ファイルは15ファイルあります。 各ファイルの列数は違っていて60~260まであります。 必要なデータが記録されている列もファイルによって違いますが 各ファイルともいらない列が半分くらいありデータは無いか"-"になっています。 データは大体整数4桁小数2桁の数値です。 毎月一回集計しないといけないので各ファイルに対応したテーブルを作り データを読み込みたいと思います。 過去分を持つとレコード数が増えるので毎回読み込みからにしたいと思います。 データをテーブルに取り込むやり方を考えています。 VBでシステムを作っているのでファイルを1行ずつ読み 必要なデータをインサートするのがいいのか SQLServerの機能を使って全部読み込むのがいいのか 何を調べて判断すればいいのかアドバイスをお願いします。 VBは2008でSQLServerも2008でやろうかと考えています。

  • CSVファイルをエクセルファイルにインポートさせるには?

    おせわになります CSVファイルをエクセルファイルにインポートさせたいのですが 方法は ユーザーフォームをにテキストボックスと参照ボタン、実行ボタンを作成し 参照ぼたんでCSVファイルを選ぶ テキストボックスには参照先の住所が記載され 実行ボタンでsheet1にB2から貼り付けさせたいのですが可能ですか? 又、CSVの情報が不要な列もあります 必要な列のみ落とし込みをしたいです 当方初心者でVBAコードがあれば幸いです。 わかる方よろしくおねがいします