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

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

ただいまの
回答率

91.47%

  • VB.NET

    698questions

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

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

解決済

回答 4

投稿 2016/05/31 21:48 ・編集 2016/06/01 08:58

  • 評価
  • クリップ 0
  • VIEW 819

tamachan

score 10

私は今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
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • KoichiSugiyama

    2016/05/31 23:15

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

    キャンセル

  • tamachan

    2016/06/01 08:58

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

    キャンセル

回答 4

check解決した方法

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 14:11

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/02 19:01

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

    キャンセル

0

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

投稿 2016/06/01 09:38

編集 2016/06/01 09:49

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/01 22:23

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

    今日は力尽きたので、明日正式に書き出しします。

    キャンセル

0

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

Visual Studio Community 2015 Version 14.0.25123.00 Update 2

Imports System.IO
Public Class Form1
    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:\xampp\"

        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
End Class

投稿 2016/06/01 09:44

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/01 22:23

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

    今日は力尽きたので、明日正式に書き出しします。

    キャンセル

0

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

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

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

投稿 2016/06/01 09:50

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/01 22:23

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

    今日は力尽きたので、明日正式に書き出しします。

    キャンセル

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

ただいまの回答率

91.47%

関連した質問

同じタグがついた質問を見る

  • VB.NET

    698questions

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