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

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

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

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

Q&A

解決済

2回答

2395閲覧

【VB.net】 CSVファイルの読み込みの際のパスの受け渡し

urozero

総合スコア21

VB.NET

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

0グッド

0クリップ

投稿2020/06/04 06:52

編集2020/06/04 06:55

前提・実現したいこと

VB.netデスクトップアプリを作っており、CSVを読み込んでテキストボックスに表示させたいです。
基本的な処理はかけていて、ボタンクリックイベントで取得したファイルのパスを、
実行処理にて引数として使うとエラーになります。
ファイル名が含まれていないからでしょうか?
ファイル名を含めるようにするにはどうすればよいでしょうか?

###構成
以下のメソッドオブジェクトで構成しています。
・イベント処理(ボタンクリック時にダイアログを表示させ、選択したCSVファイルのパスを取得)
・実行処理(パスを引数としてファイルを読み込み、テキストボックスに表示する)

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

ファイルが見つかりません。と表示されます

エラーメッセージ System.IO.FileNotFoundException:'ファイル'C¥Users¥〇〇¥Desktop'が見つかりませんでした。

該当のソースコード

VB

1ソースコード 2  ''---コントロールイベント 3  '---BTNボタンクリックイベント 4  Private sub InputCSVBTN_click 以下省略 5   'OpenFileDialogインスタンスを生成 6   Dim ofd As New OpenFileDialog() 7 8   If ofd.ShowDialog() = DialogResult OK Then 9 '読み込みファイルのパスを取得 10     Dim FilePath AS String = IO.Path.GetDirectoryName(ofd.FileName) 11 '読み込み処理を実行 12     InputCSV(FilePath) 13 14 15 ''---実行処理 16 '---ファイル読み込み 17 Public InputCSV(Bybal FilePath As String) 18 Using objIoTFP As New Microsoft.VisualBasic.FileIO.TextFieldParser(FilePath, Encoding.GetEncoding("Shift_JIS")) 19 '読み込み時の設定 20 With objIoTFP 21 '区切り文字をカンマに設定 22 .TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited 23 .SetDelimiters(",") 24 '空白があった場合にTrimしない 25 .TrimWhiteSpace = False 26 End With 27 28 'CSV読み込み実行 29 While Not objIoTFP.EndOfData 30 Dim arrayRow As String() = objIoTFP.ReadFields() 31 Dim strVeiwResult As String = Nothing 32 For Each objField As String In arrayRow 33 '表示 34 strVeiwResult = strVeiwResult & objField & "," 35 Next 36 '列の末尾のカンマを削除 37 strVeiwResult = strVeiwResult.TrimEnd(",") 38 'テキストボックスに表示 39 txtResult.Text = txtResult.Text & strVeiwResult & vbCrLf 40 End While 41 End Using 42

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

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

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

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

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

YAmaGNZ

2020/06/04 06:57 編集

フォルダのパスを渡してどのファイルを開くのですか? また、デバッガで変数の値など確かめないのですか?
urozero

2020/06/04 06:58 編集

ダイアログで指定したCSVファイルです。 パスの理解ができていないかもしれません。 フルパスじゃないといけないということでしょうか?
urozero

2020/06/04 07:04

デバックしていませんでした。すみません。 ファイル名は取得できていましたが、パスがnothingになっておりました。
guest

回答2

0

開示されたコードではわざわざフルパスからフォルダのパスを取得してそれをInputCSV()の引数に使用していますが、それだと開きたいファイルは指定されていないことになります。
エラーメッセージにもその旨表示されています。

VB

1InputCSV(ofd.FileName)

でやってみてください。

投稿2020/06/04 07:12

KoichiSugiyama

総合スコア3041

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

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

urozero

2020/06/04 07:20

回答ありがとうございます。YAmaGNZさんのアドバイスで気づけました。 申し訳ありませんが、YAmaGNZさんの回答をベストアンサーとさせてくださいm(__)m
guest

0

ベストアンサー

VBNET

1Dim FilePath AS String = IO.Path.GetDirectoryName(ofd.FileName)

これが何をしているのか、ofd.FileNameには何が入っているのかを理解しましょう。
デバッガで中身を見るなり、ログとして出力するなりして確認してみてください。

投稿2020/06/04 07:03

YAmaGNZ

総合スコア10294

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

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

urozero

2020/06/04 07:12

デバックしていませんでした。すみません。 ofd.FileNameはフルパスということで合っているでしょうか 最初におっしゃっていたように、FilePathにあるどのファイルなのか指定してないということでしょうか
YAmaGNZ

2020/06/04 07:18

ファイルを指定する場合、「どこそこのこのファイル」という感じで指定しないと分からないと思いませんか? その場所からこのファイルという情報がフルパスになります。
urozero

2020/06/04 07:21

解決しました。自分のやってることを理解してないことを痛感しました。 ご鞭撻感謝いたします。
urozero

2020/06/04 07:50 編集

解決した方法は以下の通りです。 イベント処理での実行処理メソッド:InputCSV(ofd.FileName) デバックする癖をつけます。 今回もお世話になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問