フォルダーのコピー処理として以下のように作成したのですが
コピーに時間が、かかりすぎるのでどうにかしたいのですが
どう改造したら良いのでしょう
同じフォルダーをエクスプローラでコピーすると、1分ぐらいで
終わるのですが、以下を実行すると15分位掛かってしまいます。
宜しくお願いいたします。
Private Sub sub_セーブ処理_コントロール()
Dim F_FLD, T_FLD
Dim FS, F
Set FS = CreateObject("Scripting.FileSystemObject")
Set F_FLD = FS.getfolder(WRK.FFLD)
Set T_FLD = FS.getfolder(WRK.TFLD)
'
F_FLD.Copy T_FLD, True
End Sub
速度チェックはしてませんが、
SHFileOperation(API)使ってみるとか、
サブディレクトリがないなら、DOSのCOPYコマンド発行してみるとか、
有難う御座います。Say様
まだVBを始めてから余り経っていないので
SHFileOperation(API)の使い方が解りません、使い方を教えていただけると非常にありがたいのですが。
サブディレクトリは無いのですが、OSがWinXPなのですが、DOSの
COPYコマンド発行出来るのでしょうか?
ついでにDOSのコマンドの発行の仕方も教えていただけると
ありがたいです。
APIについては自分で調べてみてください。
COPY の使い方は、DOS窓で
COPY /?
としてみてください。
実際に使う場合、DOS窓で
COPY c:\test1\*.* c:\Test2\
みたいなかんじです。
VBから実行するなら、
COPYはDOSシェル(cmdまたはcommand)の内部コマンドですから、
Shell Environ(comspec) & "/C COPY c:\test1\*.* c:\Test2\"
みたいな感じです。
有難う御座いました。Say様
早速試してみようと思います。
APIの方は、本屋にでも行って探して見ます。
APIの場合、関数名でWeb検索するのが早道ですが・・・。
DOSならXCOPYという手もありますね。
オプションつければサブフォルダもコピーできますから
SHFileOperationをWebで検索して動くようにはなったのですが
ドライブ C:にはコピーできるのですが、ほかのドライブに成ると
指定されたパスが見つかりません。
というメッセージが出てしまうのですが、どうしたら良いのでしょう。
C:の内容をUSB接続のHDに退避しようとしています。
USB接続のHDの内容はエクスプローラでは見れるのですけれど。
上記の質問は原因が解りましたので、忘れてください。
SHFileOperationを使用してコピー処理を作り直しました。
コピー時間がめちゃくちゃ短時間になりました。
皆様有難う御座いました。
ツイート | ![]() |