フォルダ削除時にエラーが発生します

解決


れいこ  2006-02-17 21:01:16  No: 94246

いつもお世話になっております。
環境  WinXP、VB6.0

FileSystemオブジェクトを使ってフォルダを削除しようとすると、
"書き込みできません"とエラーが出ます。

  ※参照設定でScriptingRuntimeを適用済みです。

  Dim objFSO        As New FileSystemObject
  dim strDelFolder  As String
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  strDelFolder = "C:\DEL\TEST1"
  objFSO.DeleteFolder (strDelFolder)

  エラーが出てから削除対象のフォルダを見ると、フォルダ内の
  ファイルは削除されています。
  
  解決策をご存知の方いらっしゃいましたらアドバイスお願い致します。


T★M  2006-02-17 22:38:26  No: 94247

削除対象フォルダに読み取り専用ファイルが存在しませんか?
隠しファイルになっている可能性もあります。


GOD  2006-02-17 22:41:04  No: 94248

カレントディレクトリが削除するディレクトリになっていませんか?
もしそうであるならカレントディレクトリを変更してください。
キーワード:CurDir, ChDir


ひろ  2006-02-17 23:14:45  No: 94249

・そのフォルダにあるファイルを誰かが開いている
・そのフォルダをカレントディレクトリにしているプロセスが存在する

といった場合にも削除が失敗しますね。


れいこ  2006-02-18 02:37:36  No: 94250

みなさんお返事ありがとうございます。

削除の命令が実行される前に、CurDirでカレントディレクトリを
表示させたところ、削除対象のフォルダ以外のパスが表示されたので
問題ないと思われます。

削除対象フォルダは読み取り専用になっていました。
プロパティから読み取り専用のチェックを外した後、プロパティの
ウインドウを閉じて、すぐ再度フォルダのプロパティを見ると、
読み取り専用にチェックが入っていました。

この読み取り専用のチェックを外すことはできないのでしょうか?
また読み取り専用のフォルダをファイルごと削除する方法は
ないのでしょうか?


Dental  2006-02-18 03:37:46  No: 94251

> 読み取り専用にチェックが入っていました。
いや、「On でも Off でも無い状態」じゃないですか?
(VB6 的にいえば、vbGrayed な状態)

だとしたら、そういうふうに表示されるのは、WinXPの仕様ですね。
Win2000の場合は、On または Off でしか表示されませんが、
XP のフォルダでは、状態に関係なく、常に vbGrayed で表示されます。

確認したいなら、エクスプローラの詳細表示モードで、
[属性]列を表示してチェックしてください。

> この読み取り専用のチェックを外すことはできないのでしょうか?
ヘルプで探せば、Attributes プロパティなどが見つかるかと。。。


れいこ  2006-02-18 03:52:49  No: 94252

環境をもう一度よく確認したところ、別プロセスが
使っていたようです。自分のミスでみなさんにお付き合いただいて
申し訳ありません。
カレントディレクトリの注意や、Attributesプロパティなど
とても勉強になりました。
今回の作業はフォルダ操作が多いので、特にプログラムでフォルダを作成
する場合など、Attributesプロパティを使用したいと思います。

みなさん本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加