こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAで読み取り専用ファイルをコピー

お世話になります。

Excel VBAでサーバーにある共有のExcelファイルを自分のPCにコピーするコードを作りました。
FileCopy "\\Server\サンプル.xls", "\\○○○\Users\Desktop\サンプル.xls"

通常は問題ないのですが、コピーするファイルが誰かに開かれていると、たぶん、読みとり専用となるためにエラーとなります。
読み取り専用の時でもエラーにならずにコピー出来る方法を教えて頂けないでしょうか?

よろしくお願いします。

投稿日時 - 2017-01-16 11:54:19

QNo.9281904

困ってます

質問者が選んだベストアンサー

コマンドプロンプトを呼び出してコピーすればいいです。
具体的にはこうなります。
Shell "Cmd /C Copy ""\\Server\サンプル.xls"" ""\\○○○\Users\Desktop\サンプル.xls"""
ファイル名に空白か含まれることがあるので、ファイル名に""を付けました。
この方法はファイル名に* を使えるというメリットもあります。
多分プログラムで行うということは、ファイル名は変数(又はセル)になると思います。その場合はこうなります。
Shell "Cmd /C Copy """ & InpFile & """ """ & OutFile & """"
但し、この方法は、コピーが終わる前に次のステップへ進んでしまいます。
コピーが完了するまでプログラムを止めたいときは、注意が必要です。

投稿日時 - 2017-01-17 08:48:31

お礼

SI299792様
ありがとうございます!スゴイです!
その後の処理でコピーしたファイルを開くようになっていたのですが、処理が速すぎてエラーになるようなので、Application.Waitで少しタイミングをズラしたら問題無く動作しました。

投稿日時 - 2017-01-17 10:02:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問