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

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

ただいまの
回答率

90.62%

  • VB

    297questions

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

VB2015でファイルを移動しようとすると「追加情報:パスへのアクセスは拒否されました。」などのエラーがでる

解決済

回答 1

投稿

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

tada_tadaa

score 83

VB2015でファイルを移動しようとすると以下のエラーが表示されます。

型 'System.UnauthorizedAccessException' のハンドルされていない例外が mscorlib.dll で発生しました

引用テキスト追加情報:パスへのアクセスは拒否されました。

フォルダにアクセス権がないのかと思ってフォルダの「プロパティ」の「セキュリティ」の「グループ名またはユーザー名」で「Everyone」を追加して「フルコントロール」の「許可」にチェックを入れました。それでも「アクセスは拒否されました。」等のエラーが出ます。

フォーム画面とプログラム文は以下になります。

イメージ説明

Public Class Form1
  'フォルダ選択ボタン
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Ret As DialogResult

    Me.FolderBrowserDialog1.Description = "フォルダーを選択してください"

    '[新しいフォルダーを作成]ボタンを表示しない
    Me.FolderBrowserDialog1.ShowNewFolderButton = False

    'ダイアログボックスを表示し、[OK]ボタンが選択されたらフォルダーパスをラベルに表示
    Ret = Me.FolderBrowserDialog1.ShowDialog()
    If Ret = DialogResult.OK Then
      Me.TextBox1.Text = Me.FolderBrowserDialog1.SelectedPath()
    Else
      Me.TextBox1.Text = ""
    End If


    'サブフォルダーを取得する
    Dim Dname As String = Me.TextBox1.Text

    If IO.Directory.Exists(dname) = False Then
      MessageBox.Show(dname & "が見つかりません。", "通知")
      Exit Sub
    End If

    Me.ListBox1.Items.Clear()
    For Each FName As String In IO.Directory.GetDirectories(Dname)
      Me.ListBox1.Items.Add(FName)
    Next



  End Sub

  '「実行する」ボタン
  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    For Each myList In ListBox1.SelectedItems
      For Each FName As String In IO.Directory.GetFiles(myList)
        '↓この部分でエラーが出る
        IO.File.Move(FName, Me.TextBox1.Text)
      Next

    Next

  End Sub
End Class

このプログラムは「フォルダ選択」ボタンでダイアログを利用してフォルダのパスをTextBox1に入力して、ListBox1にTextBox1のフォルダ内のフォルダ一覧を表示しています。
次に「実行する」ボタンを押すとListBox1の選択しているフォルダの中にあるファイルを全てTextBox1のフォルダへ移動しようとします。しかしここでエラーが発生してしまいます。実際にアクセスが拒否されているのか、プログラム文に問題があるのか(僕はこっちのような気がします)分かりません。

お手数ですがよろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+2

IO.File.Move(FName, Me.TextBox1.Text)

まずは第二引数はフォルダパスではなくファイルパスじゃないといけないのでは。

File.Move メソッド (String, String)

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/05 23:53

    回答ありがとうございます。
    workaholist様がおっしゃるようにファイルパスにしないといけませんでした。
    ファイルパスにしたところ無事に移動できるようになりました。
    下記が変更した部分です。

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    For Each myList In ListBox1.SelectedItems
    For Each FName As String In IO.Directory.GetFiles(myList)
    Dim dp = FName.LastIndexOf("\") '追加した部分
    Dim s = FName.Substring(dp) '追加した部分
    IO.File.Move(FName, Me.TextBox1.Text + s) '変更した部分
    Next

    Next
    End Sub

    単純なミスでした。どうもありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    データグリッドビューのチェックボックスについて

    はじめて利用させていただきます。 VB.NETで開発を行っている初心者です。 今回VisualStudioでDataGridViewを題材として開発の勉強を行っているのですが手

  • 解決済

    【VB.NET】子フォームから親フォームのデータグリッドの操作について

    現在、MDBからレコードを読み込み、 データグリッド・フォームに内容を表示させるアプリを作成しています。 ■前提 下記のような親・子フォームが存在します。 【親フォ

  • 解決済

    VB.NETでデータを保持したい

    Visual Studioを使いVB.NETでウィンドウズアプリケーションを作成しています。 DataGridViewを配置し、CSVを開きそのデータをDataGridView

  • 解決済

    VB.NETの問題。プログラミング初心者

    vb.netの課題で苦戦しています。 1~9までの数字ボタンがあり、数字ボタンを押下していき、「読上」ボタンを押下したら、それまで押下したボタンの内容をメッセージで順に表示するとい

  • 受付中

    VB.NET 一覧表示 検索機能

    今VB.netでBMIの計算機を作る課題がありましてその中で分からない部分があります ①そのプログラムで名前などの情報を入れてその入れた情報の一覧の確認ができる ② ①で入力した情

  • 受付中

    visual basic 2015  DataGridViewから出た数値又は任意の数値をChart...

    前提・実現したいこと buttonを押すとDataGridViewの数値をChart(グラフ)に代入、グラフを表示させたいです 下記の写真参照 ここのサイトを参照させていただき

  • 解決済

    音楽プレイヤーでリストボックスの前の曲に

     音楽プレイヤーでリストボックスの曲に戻る時におかしくなります 初めまして質問させていただきます。 音楽プレイヤーを作ってます。 リストボックスで前の曲に戻る時おかしくなりました。

  • 解決済

    プレイリストがうまく行けなくなりました。

    前回質問させていただいた物です。 すいません、実は去年から作ってたものですが プレイリストがうまくいけなくなりました。 原因 1、プレイリストは再生出来る 2、リストボックスか

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

  • VB

    297questions

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

  • トップ
  • VBに関する質問
  • VB2015でファイルを移動しようとすると「追加情報:パスへのアクセスは拒否されました。」などのエラーがでる