• ベストアンサー

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

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

コピーと取る場合は、それ用にSaveCopyASメソッドがあります。 '------------------------------------------- Sub SAMPLE()   Const DsFile = "C:\A\Sample 01.xls" '複製ファイル   ThisWorkbook.SaveCopyAs DsFile End Sub '----------------------------------------- 因みにコピー作成後も続けてデータ入力などする場合は 回答1のSaveAsではちょと拙いでしょう。 SaveAs実行後、タイトルバーのブック名を見れば理由がわかるはずです。   以上です。

sakuraww
質問者

お礼

myRangeさんへ ご推察の通り当該エクセルは入力作業をしていて適当なタイミングでバックアップします。勿論、引き続き入力作業も行います。 ご提案いただいたコードを試行した結果⇒成功(希望通りの処理ができました)。 この度は、適切な回答をいただき本当に有難うございました。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

一つ質問なんですが、これって、「バックアップも作る」ってことですよね。でしたら ThisWorkbook.Save ThisWorkbook.SaveAs Filename :="C:\Tmp\Sample_01.xls" で済む話じゃないかと。何も頑張ってコピーしなくていいんじゃないかしら・・・。

関連するQ&A

  • Excel vba ファイルの移動について

    excelのvbaでファイルを管理するツールを作り始めました。vba自体初めて間もないのですが、ファイル移動に関してわからなかった点がありますので、質問させていただきます。 インターネットで調べたところ、固定のファイルを移動及びファイル名の変更をする場合には以下の記述でできそうなんですが、 ************************************************ Option Explicit Private Const cnsSOUR = "C:\AAA\SAMPLE1.txt" Private Const cnsDEST = "C:\BBB\SAMPLE2.txt" Sub MOVE_SAMPLE1() Name cnsSOUR As cnsDEST End Sub ************************************************** この"C:\AAA\SAMPLE1.txt"及び"C:\BBB\SAMPLE2.txt"を 変数で記述するとエラーになってしまい、プログラムが通りません。 何かいい方法がございましたら、ご教授ください。 過去の質問を調べてもいまいちわかりませんでした。

  • 自身のファイルのコピーを作成したい

    アクセス2003vbaです。 自身のファイルのコピーを作成したいのですが Sub Sample() FileCopy CurrentProject.FullName, "C:\あああ.mdb" End Sub を実行すると 「実行時エラー'70' 書き込みできません」 になってしまいます。 もしかして同じフォルダ内じゃないと駄目なのですか?(「C:」) 何か間違っていますか? よろしくお願いします。

  • エクセル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

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

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

  • 【VBA】ファイルを開く→シートをコピー→保存

    VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。

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

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

  • ExcelVBAでセルに入力された値をみて複数のファイルコピーするマクロ

    VBA初心者です。関連する質問はみたのですが、組み合わせが他と違い うまくできませんでした。 EXCELのマクロを使って、それぞれ格納場所が異なる2つのエクセルファイル(格納元D:\AAA\123A.xlsと格納元D:\BBB\123B.xls)をコピーして指定のフォルダ(格納先D:\ZZZ\)内へ2つファイルを保存したいのですが・・ Private Const cnsSrc = "D:\AAA\123A.xls" Private Const cnsDst = "D:\ZZZ\123A.xls" Sub COPY_Func() ' ファイルをコピー FileCopy cnsSrc, cnsDst End Sub まで考えたんですが 複数のファイルまでコピーさせることができませんでした。 また、それぞれのフォルダ内には○○○A.xlsと○○○B.xlsが複数あるため コピーするファイル名は選択させたく、sheet1のA1セルに入力された"123"を みて123A.xls123B.xlsをコピーさせたいのですが、可能でしょうか? 宜しくお願い致します。

  • excelのファイルコピー

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

  • VBAでエラーが出ます

    セルの値を変数に格納して、それをブック保存時に使いたいのですが上手くいきません。 Sub サンプルブック保存() Dim myfile As String myfile = workbooks("サンプル").Worksheets("sheet1").Cells(2, 9) workbooks.Add ActiveWorkbook.SaveAs Filename:="\\C:\フォルダ\" & myFile & ".xls" End Sub エラーメッセージは、 実行時エラー'1004': SaveAs'メソッドは失敗しました'_Workbook'オブジェクト と出ます。 非常に困ってます。 教えてくだされば幸いです。

  • VBA フォルダ内のファイル名一覧

    下のようなコードですが、Dir("C:\見積\*.xls")の部分を このコードを書いてあるブックのあるフォルダの名前をもっと簡単に取得してコードにできないでしょうか。 もうひとつ付け加えたいこともあります。ファイル名一覧にする際、このブックと「XXX.xls」という名前のブック名以外の一覧にしたいのですが、これもお手上げですので、あわせてお願いします。 Sub test() Dim myFile As String Dim fl As Integer myFile = Dir("C:\見積\*.xls") fl = 9 Do While myFile <> "" fl = fl + 1 Cells(fl, 3).Value = myFile myFile = Dir() Loop End sub