• ベストアンサー

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

お世話になります。 Excel VBAでサーバーにある共有のExcelファイルを自分のPCにコピーするコードを作りました。 FileCopy "\\Server\サンプル.xls", "\\○○○\Users\Desktop\サンプル.xls" 通常は問題ないのですが、コピーするファイルが誰かに開かれていると、たぶん、読みとり専用となるためにエラーとなります。 読み取り専用の時でもエラーにならずにコピー出来る方法を教えて頂けないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

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

veryhot
質問者

お礼

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

関連するQ&A