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

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

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

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

Q&A

解決済

1回答

16747閲覧

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

tada_tadaa

総合スコア111

VB

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

0グッド

0クリップ

投稿2017/10/01 14:38

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

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

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

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

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

イメージ説明

vb

1Public Class Form1 2 'フォルダ選択ボタン 3 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 4 Dim Ret As DialogResult 5 6 Me.FolderBrowserDialog1.Description = "フォルダーを選択してください" 7 8 '[新しいフォルダーを作成]ボタンを表示しない 9 Me.FolderBrowserDialog1.ShowNewFolderButton = False 10 11 'ダイアログボックスを表示し、[OK]ボタンが選択されたらフォルダーパスをラベルに表示 12 Ret = Me.FolderBrowserDialog1.ShowDialog() 13 If Ret = DialogResult.OK Then 14 Me.TextBox1.Text = Me.FolderBrowserDialog1.SelectedPath() 15 Else 16 Me.TextBox1.Text = "" 17 End If 18 19 20 'サブフォルダーを取得する 21 Dim Dname As String = Me.TextBox1.Text 22 23 If IO.Directory.Exists(dname) = False Then 24 MessageBox.Show(dname & "が見つかりません。", "通知") 25 Exit Sub 26 End If 27 28 Me.ListBox1.Items.Clear() 29 For Each FName As String In IO.Directory.GetDirectories(Dname) 30 Me.ListBox1.Items.Add(FName) 31 Next 32 33 34 35 End Sub 36 37 '「実行する」ボタン 38 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 39 40 For Each myList In ListBox1.SelectedItems 41 For Each FName As String In IO.Directory.GetFiles(myList) 42 '↓この部分でエラーが出る 43 IO.File.Move(FName, Me.TextBox1.Text) 44 Next 45 46 Next 47 48 End Sub 49End Class

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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

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

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

投稿2017/10/04 01:26

workaholist

総合スコア559

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

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

tada_tadaa

2017/10/05 14: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 単純なミスでした。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問