• ベストアンサー

エクセルVBA 開いているブックのコピー

filecopyを使って、ファイルをある場所から別の場所へコピーしたいと思っています。 しかし、コピー元のファイルが開かれていると、エラーが出ていることがわかりました。 FileCopy "C:\xxxxx\B.xls","C:\yyyyy\B.xls" といったコードで、B.xlsが開かれていると、エラーが起こります。 エラーが起こるのはこのコマンドの仕様のようです。 ただし、自分自身(このコードを実行しているファイル)はA.xlsとします。 対象のファイルが開かれていてもコピーするには、どうしたらよいでしょうか?

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

  • ベストアンサー
回答No.1

こんにちは。 エラーになるのは、内部コマンドを使うからでは? Set objFso = CreateObject("Scripting.FilesystemObject") objFso.Copyfile "C:\xxxxx\B.xls","C:\yyyyy\B.xls" Set objFso = Nothing というようにしてみたら、いかがですか?

sukkkiyaki
質問者

お礼

みようみまねでやってみたらできました! 意味はよくわかっていないですが、とりあえず動いたので良しとします。 回答ありがとうございました。

その他の回答 (1)

noname#203218
noname#203218
回答No.2

下記方法でも可能だと思います。ご参考まで。 Workbooks("B.xls").Activate ActiveWorkbook.SaveAs Filename:="C:\yyyyy\B.xls"

sukkkiyaki
質問者

お礼

回答ありがとうございます。 今度試してみますね。

関連するQ&A

  • excelのファイルコピー

    excelvbaでファイルコピーをしようと思っています。 コピーは自分自身のファイルをコピーしようとしています。 ファイル1.xls(自分自身、コピー元) ファイル2.xls(コピーされたファイル) FileCopyを使用し以下のようにやろうとしましたが、書き込みエラーがでてうまくいきませんでした。 エラーメッセージ「実行時エラー '70': 書き込みできません。」 FileCopy "ファイル1.xls", "ファイル2.xls" どのようにすればうまくいくのでしょうか?

  • エクセルのVBAでファイルの状態を調べるコマンド

    エクセルのVBAでファイルのコピーをしたいのですが、コピー元がOPEN状態だとコピーできません。 FileCopy "C:\A.XLS", "C:\B.XLS" そこで、上記のコマンドを実行する前に、コピー元がOPEN状態かどうかを判断させて、OPEN状態だと実行を5秒待つようなマクロを記述したいのですが、可能でしょうか?

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

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

  • エクセル2010 式だけ新しいbookにコピー

    よろしくお願いします。エクセル2010で以下のようなことをできないでしょうか? A.Xls というファイル名のシート1に、シート2のC1~C3の合計を出す SUM(Sheet2!C1,Sheet2!C2,Sheet2!C3) という式が入っています。他のファイル(たとえばB.Xls)でもシート2のC1~C3を足したいのです。 A.Xlsのシート1をコピーしてB.xlsのシート2のC1~C3を足せるようにしたいのです。 普通に式をコピーすると SUM([A.xls]Sheet2!C1,[A.xls]Sheet2!C2,[A.xls]Sheet2!C3) というようにA.xlsのファイルを参照します。 これをコピーしたときに、コピー先のファイルを参照するようにできないでしょうか? SUM([B.xls]Sheet2!C1,[B.xls]Sheet2!C2,[B.xls]Sheet2!C3) となるようにしたいのです。 同じ形式のファイルが数百あり、それを同じ形式で整理していきたいのです。 一つ集計の見本シートを作ってそれを他のファイルにコピーしていけば いちいち同じ式をすべてのファイルに書いたりしなくてもいいのではと思っているのですが できないでしょうか? やはり同じ作業をすべてのファイルで行わなければいけないでしょうか アドバイスを頂ければと思います。

  • エクセルVBAで開いているファイルをコピーする方法

    はじめまして。 ころと申します。 (初書き込みです。そして、エクセルVBA初心者です。 質問の仕方等に問題がありましたら、ご指摘ください。) 以下のようにファイルをコピーする方法を知っているのですが、CopyTest1.xlsを開いているとコピーできません。ファイルを開いていてもコピーする方法を教えてください。 Sub copy() SourceFile = "C:\CopyTest1.xls" TargetFile = "C:\CopyTest2.xls" FileCopy SourceFile, TargetFile End Sub CopyTest1.xlsを開いて、CopyTest1.xlsのマクロを動かして、CopyTest1.xlsのファイルの複製を作りたいのです。 詳しい方々、よろしくお願いいたしますm(__)m

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • VBA-MyExcelファイルをコピー

    目的は今開いているExcelファイルを適宜バックアップする。 方法として自身Excelに下記VBA「FileCopy」文を記述して実行⇒実行エラーにて失敗。 対処方法又は妙案をご教授ください。 Option Explicit Private Const MyFile = "C:\Tmp\Sample.xls" '自身ファイル Private Const DsFile = "C:\Tmp\Sample_01.xls" '複製ファイル Sub SAMPLE() ThisWorkbook.Save FileCopy MyFile, DsFile End Sub

  • Excel VBAの違うBOOKへのコピーについて

    お世話様です excel vbaのコピーについての質問です C:\Documents and Settings\tanaka\デスクトップ\a というbookの中にあるsheet1のa1のデータ(以後a-a1と表記)を C:\Documents and Settings\tanaka\デスクトップ\b というbookの中にあるsheet2のc1にコピーしたい、と言った場合、 (以後b-c1と表記) それぞれのbookをactiveにしないとだめでしょうか (つまり、違うbookのファイル間でのコピーの際の質問なのですが) 私にはその方法しかわからず、この後 a-a11をb-d3へ、a-e11をb-s18へというアットランダムコピーが続くのですが、非常にコードも長く、時間がかかる処理になってしまいます。 どうか教えていただけると助かります 宜しくお願いします

  • 【Excel VBA】ファイルをコピーする

    Excel2003を使用しています。 FDに一時保存されているデータを保存用データとして、MOへコピーしています。 FileCopy ステートメントというものを参考書で見たので、マクロの勉強がてら、試しにやってみたのですが、エラーが出てしまいました。  Sub 保存用作成()   FileCopy "A:\○○.xls","F:\○○.xls"  End Sub エラーメッセージは、『書き込めません』と出ていたのですが… よろしくお願いします。

  • VBA IFについて

    Sub コピー() Dim x As Variant MsgBox "作成を開始します" Application.ScreenUpdating = False For Each x In Excel.Workbooks.Item("test1.xls") _ .Worksheets.Item(1).Range("B2:B20").Value If VBA.Len(x) > 0 Then FileCopy "C:\test\フォーマット.xls" , "C:\test2\" & CStr(x) & ".xls" End If Next MsgBox "作成が完了しました" End Sub 上記のコードで”B2:B20”セルの値の名前にしてファイルをコピーしているのですが、”B2:B20”値の名前のファイルがtest2フォルダにあればコピーしないようにしたいのです。 変数xがtest2フォルダになければというコードがどうしてもかけません。 どなたかご教授ください。

専門家に質問してみよう