- ベストアンサー
Excel VBAで読み取り専用ファイルをコピー
お世話になります。 Excel VBAでサーバーにある共有のExcelファイルを自分のPCにコピーするコードを作りました。 FileCopy "\\Server\サンプル.xls", "\\○○○\Users\Desktop\サンプル.xls" 通常は問題ないのですが、コピーするファイルが誰かに開かれていると、たぶん、読みとり専用となるためにエラーとなります。 読み取り専用の時でもエラーにならずにコピー出来る方法を教えて頂けないでしょうか? よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
コマンドプロンプトを呼び出してコピーすればいいです。 具体的にはこうなります。 Shell "Cmd /C Copy ""\\Server\サンプル.xls"" ""\\○○○\Users\Desktop\サンプル.xls""" ファイル名に空白か含まれることがあるので、ファイル名に""を付けました。 この方法はファイル名に* を使えるというメリットもあります。 多分プログラムで行うということは、ファイル名は変数(又はセル)になると思います。その場合はこうなります。 Shell "Cmd /C Copy """ & InpFile & """ """ & OutFile & """" 但し、この方法は、コピーが終わる前に次のステップへ進んでしまいます。 コピーが完了するまでプログラムを止めたいときは、注意が必要です。
お礼
SI299792様 ありがとうございます!スゴイです! その後の処理でコピーしたファイルを開くようになっていたのですが、処理が速すぎてエラーになるようなので、Application.Waitで少しタイミングをズラしたら問題無く動作しました。