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

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

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

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

Q&A

解決済

4回答

5246閲覧

ヤフー知恵袋に回答のあるVB.netのコードについて教えてください

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

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

0グッド

0クリップ

投稿2016/05/31 12:48

編集2016/05/31 23:58

私は今Vbnetの勉強をしています。

そこでヤフー知恵袋にある質問回答を発見し、その回答を自分のパソコンのVB2015で試したところ、ある部分でエラーが出ました。
ある部分とは下記です。

files = Directory.GetFiles(DirPath)

エラー内容は、


NullReferenceExceptionはハンドルされませんでした。
型 'System.NullReferenceException' のハンドルされていない例外が Microsoft.VisualBasic.dll で発生しました
追加情報:オブジェクト変数または With ブロック変数が設定されていません。
トラブルシューティングのヒント:
メソッドを呼び出す前に、オブジェクトがNullで良いかどうか確認してください。
オブジェクトインスタンスの作成にはnewキーワードを使用します。
この例外に関する一般的なヘルプを参照します。


ちなみにヤフー知恵袋の質問者はVB2010のようです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1183808806

質問者は回答者からアンサーをもらって正常に動いているようですが、私のVBではエラーが出てしまっています。
どうしてか教えていただけますでしょうか。
ちなみに私はVB初心者です。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim dt As New DataTable("File Viewer") Dim files As String() Dim DirPath As String = "C:\File Viewer\" dt.Columns.Add("ファイル名") dt.Columns.Add("ファイル種類") dt.Columns.Add("ファイルサイズ") files = Directory.GetFiles(DirPath) For Each filePath As String In files Dim fi As New FileInfo(filePath) Dim dr As DataRow = dt.NewRow() dr("ファイル名") = fi.Name dr("ファイル種類") = fi.Extension dr("ファイルサイズ") = fi.Length dt.Rows.Add(dr) Next DataGridView1.DataSource = dt End Sub

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

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

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

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

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

KoichiSugiyama

2016/05/31 14:15

どんなエラーが出ているのかを正確に提示していただけますか。
退会済みユーザー

退会済みユーザー

2016/05/31 23:58

エラー内容書き込みました。よろしくお願いいたします。
guest

回答4

0

ベストアンサー

事前にfでファイル名検索をしました。

Dim FileName As String = txtBoxFileName.Text Dim files1 As String() = IO.Directory.GetFiles(fpath, "*" & FileName & "*", System.IO.SearchOption.AllDirectories) For Each f As String In files1

そのfを用いることでエラーはなくなりました。

Dim dt As New DataTable() Dim dr As DataRow = dt.NewRow() dt.Rows.Clear() dt.Columns.Add("ファイル名") dt.Columns.Add("更新日時") dt.Columns.Add("サイズ(kB)") dt.Columns.Add("パス") dr("ファイル名") = System.IO.Path.GetFileName(f) dr("更新日時") = System.IO.File.GetLastWriteTime(f) 'dr("サイズ") = System.IO. dr("パス") = System.IO.Path.GetDirectoryName(f) dt.Rows.Add(dr) dgv1.DataSource = dt

ただ、'dr("サイズ") = ・・・の書き方がわかりません。

投稿2016/06/02 05:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/06/02 10:01

Filelen(ファイルフルパス)かも
guest

0

環境がないので確認できませんが、DirPathに指定しているパスが存在するか確認してください。

Dim DirPath As String = "C:\File Viewer"

知恵袋のをそのまま使っているようなので、自分の環境が同じとは限らないですよ。

投稿2016/06/01 00:50

ttyp03

総合スコア16996

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

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

退会済みユーザー

退会済みユーザー

2016/06/01 13:23

ご回答ありがとうございます。 実際はヤフー知恵袋の回答を参考にして自分でコード書いてます。ファイル検索行っていからデータグリッドビューに表示させるようにしてました。ファイル検索で使用した変数をデータグリッドビュー表示の際に使わず新しく変数を作った(fi)ためにエラーが起きたみたいです。 とは言っても別の問題が出てきてしまったりしているのすが。 今日は力尽きたので、明日正式に書き出しします。
guest

0

フォームを作ってそのまま貼り付けてみましたが動いちゃいました
Imports System.IO追加、DirPath修正しただけ
色々消したりしたけど上記のエラーが出ないですね

Visual Studio Community 2015 Version 14.0.25123.00 Update 2

VB

1Imports System.IO 2Public Class Form1 3 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 4 Dim dt As New DataTable("File Viewer") 5 Dim files As String() 6 Dim DirPath As String = "C:\xampp\" 7 8 dt.Columns.Add("ファイル名") 9 dt.Columns.Add("ファイル種類") 10 dt.Columns.Add("ファイルサイズ") 11 12 files = Directory.GetFiles(DirPath) 13 14 For Each filePath As String In files 15 Dim fi As New FileInfo(filePath) 16 Dim dr As DataRow = dt.NewRow() 17 dr("ファイル名") = fi.Name 18 dr("ファイル種類") = fi.Extension 19 dr("ファイルサイズ") = fi.Length 20 dt.Rows.Add(dr) 21 Next 22 23 DataGridView1.DataSource = dt 24 End Sub 25End Class

投稿2016/06/01 00:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/06/01 13:23

ご回答ありがとうございます。 実際はヤフー知恵袋の回答を参考にして自分でコード書いてます。ファイル検索行っていからデータグリッドビューに表示させるようにしてました。ファイル検索で使用した変数をデータグリッドビュー表示の際に使わず新しく変数を作った(fi)ためにエラーが起きたみたいです。 とは言っても別の問題が出てきてしまったりしているのすが。 今日は力尽きたので、明日正式に書き出しします。
guest

0

すみません、長々と書いていたのですが、もしかしたらDirecotryを使うにあたって、 System.IOの名前空間をインポートしていないからじゃないかと思えてきました。

投稿2016/06/01 00:38

編集2016/06/01 00:49
KoichiSugiyama

総合スコア3041

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

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

退会済みユーザー

退会済みユーザー

2016/06/01 13:23

ご回答ありがとうございます。 実際はヤフー知恵袋の回答を参考にして自分でコード書いてます。ファイル検索行っていからデータグリッドビューに表示させるようにしてました。ファイル検索で使用した変数をデータグリッドビュー表示の際に使わず新しく変数を作った(fi)ためにエラーが起きたみたいです。 とは言っても別の問題が出てきてしまったりしているのすが。 今日は力尽きたので、明日正式に書き出しします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問