[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/02/14(Tue) 13:26
投稿者名:Oz
Eメール:
URL :
タイトル:
FileCopy後のデバイス取り外し
はじめまして。
過去ログとか見たのですが、見つけられないのでご質問いたします。

FileCopyでファイルをコピーしているのですが、コピー先がUSB接続の取り外し可能ドライブを
指定します。
具体的には、USBのメモリカードなのですが。

で、ファイルをコピーした後でUSBのメモリカードが取り外せない状態になります。
アプリケーションが使用中の状態です。
そのアプリケーションを閉じれば取り外しできるのですが。

実際にコピー先のディレクトリごと削除しようとしたら、ファイルが使用中というエラーで削除でき
ません。
ルートにあるフォルダの中身は、全フォルダ、全ファイル削除されているのですが、一番上の階層の
フォルダだけ削除できません。

これを解放する方法というのはあるのでしょうか?
取り外し可能媒体ですので、コピーした後でアプリケーションを閉じなくても取り外せるようにした

と思っているのですが。

よろしくお願いいたします。

投稿時間:2006/02/14(Tue) 13:51
投稿者名:ダンボ
URL :
タイトル:
Re: FileCopy後のデバイス取り外し
こんにちは。

簡単に、下記のコードでFileCopyして、プログラム(IDE)が動作している最中に
ExplorerからUSB(Z:)を全フォルダ消去して問題なし。更にUSB取り外しまでO.K.

Private Sub Command1_Click()
  FileCopy "D:\#Temp\al2.doc", "Z:\temp\x.x"
End Sub

ということで、Ozさんのプログラムか試験時に何か別の物がUSBを開いている筈です。
(FileCopy のせいではない)

投稿時間:2006/02/14(Tue) 14:18
投稿者名:Oz
Eメール:
URL :
タイトル:
Re^2: FileCopy後のデバイス取り外し
ダンボさん、速攻レスありがとうございます m(_ _)m

> ということで、Ozさんのプログラムか試験時に何か別の物がUSBを開いている筈です。
> (FileCopy のせいではない)

なるほど、そうですか。
では、さっそく別の視点で調査を開始します。

情報、ありがとうございました。

投稿時間:2006/02/17(Fri) 14:29
投稿者名:まる
Eメール:
URL :
タイトル:
Re: FileCopy後のデバイス取り外し
先ほど、出張中の先輩から、Ozさんと同じ症状の件で調べて欲しいと連絡が入り、
こちらを見つけました。
調査中に、先輩が自己解決したと、再度連絡がありましたので、こちらの解決策を
報告いたします。

Ozさんは、メモリカードのドライブに対して「Dir関数」を使ってないでしょうか?
Dir関数は、2回目以降の呼出では引数を省略できるため、なんらかの情報を握った
状態になるのでは?と予想します。
スマートな解決策ではありませんが、もしDir関数を使用しているのであれば、ダミーで
Cドライブ等に対してDir関数を実行すれば、USBメモリに対してVBが握っている情報を
解放するようです。

投稿時間:2006/02/17(Fri) 14:33
投稿者名:まる
Eメール:
URL :
タイトル:
Re^2: FileCopy後のデバイス取り外し
先ほど投稿したばかりで申し訳ないのですが、ダミーでDir関数の実行するのではなく

Call Dir(vbNullString)

を実行すれば、解放(クローズ)されるようです。