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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VB

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

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

VB.NET

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

Q&A

解決済

1回答

1110閲覧

【VB.net】列挙型Enumを用いたCSVファイル出力処理

urozero

総合スコア21

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VB

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

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

VB.NET

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

0グッド

0クリップ

投稿2020/06/17 06:35

編集2020/06/18 05:56

前提・実現したいこと

CSVファイルからカンマ区切りで画面のテキストボックスに表示しています。
そのテキストボックスのデータを再度CSVファイルへ出力したいと考えてます。

――テキストボックス上(出力元)の1要素指定(DataGridViewならCell)がわからない――
サンプルの出力元がDGVで、この部分だけわからなくなってます。
コードの「Cells」をどのように直せばいいでしょうか?
よろしくお願いいたします。

【出力処理の流れ】
StreamWriter、StringBuilder
拡張Forにて、画面のテキストボックス(ResultTXT)のデータを1行ずつCSVファイルに書き込む。

テキストボックス内データ

アラン・チューリング,コンピュータ科学者・数学者,「チューリングマシ」の提唱者,1912年 - 1954年,イギリス
アレクサンダー・フレミング,細菌学者,抗生物質「ペニシリン」を発見,1881年 - 1955年,イギリス
エドウィン・ハッブル,天文学者・,銀河の赤方偏移を発見,1889年 - 1953年,アメリカ
・・・・・・
同じように5項目(列)が全18行あります。
出力先のCSVファイルも、ヘッダなしの5列×18行分のセルに収めたいです。

発生している問題・エラーメッセージ

'Cells'は'String'のメンバーではありません。

該当のソースコード

VB

1'---クラス変数 2Public Enum Great_Index As Integer 3   Great_Name '偉人の氏名 4 Expert_Areas     '偉人の分類 5 Performance '偉人の業績 6 BirthDeath_Year '偉人の生没年 7 Country '偉人の出身国 8End Enum 9 10Public Class Form1 11 12''イベント処理 13'OutputFileBTNクリック時 14Public Sub OutPutFileBTN_Click(sender As Object,e As EventArgs) Handles OutPutFileBTN.Click 15Dim sfd As SaveFileDialog 16 17'出力ファイルパスを取得 18Dim strFilePath As String = sfd.FileName 19 20'ダイアログ表示 21If sfd.ShowDialog() = DialogResult.OK Then 22 'メッセージ 23 If System.IO.File.Exists(sfd.FileName) Then 24 '完了メッセージ 25 End If 26End If 27 28 29''実行処理 30'ファイル出力 31Public Sub OutputCSV(Result.txt As TextBox,byval strFilePath As String) 32'CSVファイルに書き込むときに使うEncoding 33Dim enc As System.GetEncoding("Shift_JIS") 34'書き込むファイルを開く 35Using writer As New StreamWriter(sfd.FileName,Faulse,enc) 36 For Each tetLines As String In ResultTXT.Lines 37 Dim _buffer As New StringBuilder() 38 _buffer.Append(txtLines.Cells(Great_Index.Great_Name).Value.ToSting()) 39 _buffer.Append(",") 40 _buffer.Append(txtLines.Cells(Great_Index.Expert_Areas).Value.ToSting()) 41 _buffer.Append(",") 42 _buffer.Append(txtLines.Cells(Great_Index.Performance).Value.ToSting()) 43 _buffer.Append(",") 44 _buffer.Append(txtLines.Cells(Great_Index.BirthDeath_Year).Value.ToSting()) 45 _buffer.Append(",") 46 _buffer.Append(txtLines.Cells(Great_Index.Country).Value.ToSting()) 47 48 '書き込み 49    writer.WriteLine(_buffer.ToString()) 50 Next 51End Using 52

試したこと

txtLines. と打ち、続くキーワードを試す

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/06/17 06:47 編集

コードの中に定義不明の変数・メソッドがありますが、そういうのはナシに(きちんと書く)してもらえませんか?
YAmaGNZ

2020/06/17 06:50

ResultTXTとやらには何が入っているのですか?具体的に示してください。
urozero

2020/06/18 05:56 編集

SurferOnWww様 すみません。定義元があるイベント処理メソッドを追記しました。 YAmaGNZ様 すみません。テキストボックス内データを追記しました。
YAmaGNZ

2020/06/18 05:56

テキストボックスの内容をそのままファイルに書いたら目的のCSVなのではないですか? 無駄に回り道をして迷子になっているように見えます。
urozero

2020/06/18 06:02

ご指摘ありがとうございます。 すみません、どの部分が回り道なのかわかりません。 Enumで定義したものは多少コードが長く見づらくなっても、明示的に記述するためにできるだけ利用したいのです。その部分でしょうか?
退会済みユーザー

退会済みユーザー

2020/06/18 06:10

> Using writer As New StreamWriter(sfd.FileName,Faulse,enc) Faulse というのは False の間違いですよね? エラーメッセージ以外にも問題がいろいろあるようで、全面的に見直さないとダメなのでは? > For Each tetLines As String In ResultTXT.Lines 依然として定義不明です。 ResultTXT って何ですか? Lines で何が取得できるのですか? tetLines って何ですか?
YAmaGNZ

2020/06/18 06:24 編集

File.WriteAllText(sfd.FileName,ResultTXT.Text,System.GetEncoding("Shift_JIS")) で済む話じゃないのですか? 1行ずつ処理するとしても、カンマで区切られている文字をわざわざカンマで分割して、またカンマ区切りの文字列に構成して書き込むということですよね? これが無駄にしか見えないのですがどのような理由からこうしたいのでしょうか?
urozero

2020/06/18 06:23

SurferOnWww様 ご指摘ありがとうございます。 その通りです。修正します。 ResultTXTは画面のテキストボックスのデザインNameです。 Linesでテキストボックス内データの18行を1行ずつ取得しようとしてます。 tetLinesは1行ずつ取得したデータを入れる変数としているつもりです。
urozero

2020/06/18 07:41

YAmaGNZ様 おっしゃる通りです。サンプルに頼りすぎていました。 完成できました。 1行ずつの処理もできれば着手しようと思います。 ありがとうございました!
YAmaGNZ

2020/06/18 08:48

順次処理するといっても、はっきり言って前回の質問と同じですよ 入力がファイルから、TextBoxのTextに変わるだけです。 引っかかるとすれば、TextFieldParserにデータを与える時にStringからStreamに変換する部分でしょうが、これも検索すればStringReaderクラス等方法がでてくるはずです。
urozero

2020/06/19 00:08

それは失礼しました。 1行ごとに丁寧に理解しようとしていませんでした。 ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

そのエラーメッセージそのまんまで、文字列にはCellsというメソッドはありません
何かと勘違いしてるでしょうか

投稿2020/06/17 06:48

y_waiwai

総合スコア87774

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

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

urozero

2020/06/18 05:52

DataGridViewでいうCells(1要素)が、テキストボックスだと何というキーワードになるのでしょうか または同じような処理になる記述の仕方などはあるでしょうか  という質問になります。わかりづらかったらすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問