質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

8398閲覧

VBでCSVデータから一部を抜き出したCSVデータを作成したいです

syameimaru

総合スコア181

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2017/08/07 06:06

編集2017/08/07 06:09

###前提・実現したいこと
・CSVデータは何行あるかはその時々で、そのCSVデータの10行から先を新たにCSVデータとして出力させたいです。
例:CSVデータ(11行)の場合は10,11行目だけをCSVデータとして出力

・CSVデータが10行以下の場合は出力しません

・CSVデータの1行目から9行目はリッチテキストボックスに表示させています。

###CSV取り込みのソースコード

VB

1 Dim fileName As String = "CSVファイルがある場所のフルパス" 2 3 'CSVファイルがあるかどうか 4 If IO.File.Exists(fileName) Then 5 6 'CSVファイルがあったら、CSVデータをShft_jisとして取り込む 7 Dim txtParser As FileIO.TextFieldParser = New FileIO.TextFieldParser "CSVファイルがある場所のフルパス", 8 System.Text.Encoding.GetEncoding("shift_jis")) 9 10 '内容は区切り文字形式として取り込む 11 txtParser.TextFieldType = FileIO.FieldType.Delimited 12 13 'デリミタはカンマとして取り込む 14 txtParser.SetDelimiters(",") 15 16 'ファイルの終わりまで一行ずつ読み込む 17 While Not txtParser.EndOfData 18 19 '一行を読み込んで配列に結果を受け取る 20 Dim splittedResult As String() = txtParser.ReadFields() 21 22 '配列からoutputへ出力する 23 For Each output As String In splittedResult 24 'outputをテキストに代入する 25 mytxt(i).Text = output 26 '次のテキストボックスへ 27 i = i + 1 28 End If 29 Next 30 End While

###補足情報(言語/FW/ツール等のバージョンなど)
言語 VB
環境 win7 64bit
Visual Studio 2015

###最後に
無知な私ですが、どうか皆様のお知恵をお貸しください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一番手っ取り早くやるのであれば、カウンター用の変数を用意して0-9までの処理を飛ばしてしまえばいいのではないでしょうか?

ファイル書き込みについて追記しました。デバッグなどはやってないので参考としてお持ちください。

'書き込み用のファイルストリームを定義 Dim fs As FileStream = New FileStream("出力先フルパス", FileMode.Append, FileAccess.Write) Dim sw As StreamWriter = New StreamWriter(fs) Dim oneLine As String '追加部分 Dim count As integer count = 0 'ファイルの終わりまで一行ずつ読み込む While Not txtParser.EndOfData ’追加部分 if count < 8 then i += 1 Continue While End if '一行を読み込んで配列に結果を受け取る Dim splittedResult As String() = txtParser.ReadFields()    ’書き込み用文字列初期化    oneLine = ""    '配列からoutputへ出力する For Each output As String In splittedResult 'ここでCSVの形式となるように成形してください。      oneLine += output + "," Next        sw.WriteLine(oneLine) End While sw.Close() fs.Close()

投稿2017/08/07 06:18

編集2017/08/07 07:42
Yuki_S

総合スコア356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syameimaru

2017/08/07 07:05

回答ありがとうございます。 この方法で飛ばすことは出来るのですが、それ以降のデータをCSVデータとして出力させる方法がわからなくて...
Yuki_S

2017/08/07 07:09

一旦データを内部(メモリ)で留保するのか、そのまま新しいファイルを用意して書き込みたいかで変わるのですがどちらが良いですか?
syameimaru

2017/08/07 07:58

そのまま新しいファイルを用意して書き込む方法をお願いいたします。
Yuki_S

2017/08/07 08:03

回答に追記しました。 ちなみに、CSVを読み込むところでtxtParserを使っていますが、CSVの内容や形式が全く同じであるのであればStreamReaderで一行そのまま読み込んで、StreamWriterで書きだしてしまうのも手だと思います。
Yuki_S

2017/08/07 08:11

何度もコメントすみません。 一応注記事項として、上記コードはヘッダーの出力を考慮しておりません。 ヘッダーが必要な場合は1行目を飛ばさずに2行目以降を飛ばすようにして下さい。
syameimaru

2017/08/07 23:13

回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問