• ベストアンサー

ブックを開いたとき自動的にバックアップを取るマクロはどうするのですか?

Windows 2000,Excel 2000使用 共有で使用するブックを作成したのですが、なにかの問題でデータが壊れるといやなので、できればブックを開いたときに裏で自動的にバックアップを取るマクロというのは作れるのでしょうか? どうしてもうまくできなくて...よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

> [ツール]-[マクロ]-[マクロ]でauto_openを実行すればうまくいくのですが、 > ブックを開いたときは更新されません。 そのブックを開くとき、他のVBAコードから開いていませんか? コードからブックを開いたときは、Auto_Open に記述したコードは、実行されません。 > このマクロは「Thisworksheet」、「標準モジュール」のどちらに記述すれば良い > のでしょうか。 「ThisWorkbook」の Open時イベントに記述すると、「標準モジュール」の Auto_Open より優先されて実行されます。 > 開く前にバックアップしたかったのです。 使用前のバックアップが目的であれば、ThisWorkbookクラスのOpen時イベントで 「バックアップファイル」を作成する方法が適当かと思いますが、如何でしょうか。 下記コードを記述すると、開いたとき、そののブックと同じフォルダに 「何々のバックアップ.xlk」という「バックアップファイル」が出来ます。 Private Sub Workbook_Open() Dim FName As String FName = ThisWorkbook.FullName Application.DisplayAlerts = False ActiveWorkbook.SaveAs FName, CreateBackup:=True Application.DisplayAlerts = True End Sub

39call
質問者

お礼

ご連絡遅くなりました。 thisworksheetsに記述したら、無事バックアップを取ることが出来ました。 これで一安心です。ありがとうございました。 またよろしくお願いいたします。

その他の回答 (3)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

私の場合は標準モジュールに書いてあります。 普通にオープン時に実行されています。 他のマクロの関係で、実行されないのであれば、私の手におえません。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

このマクロでどうでしょうか。 Sub auto_open() Dim vvv As String Dim xxx As String vvv = ThisWorkbook.Name '****.xls xxx = Left(vvv, Len(vvv) - 4) & "_OLD" '****_OLD Application.DisplayAlerts = False '保存確認のメッセージを出さない On Error GoTo 888 Workbooks.Open Filename:=xxx & ".xls" ActiveWorkbook.SaveAs _ Filename:=xxx & "_OLD.xls", _ FileFormat:=xlWorkbookNormal Workbooks(xxx & "_OLD.xls").Close 888: ThisWorkbook.Activate ActiveWorkbook.SaveAs _ Filename:=xxx & ".xls", _ FileFormat:=xlWorkbookNormal ActiveWorkbook.SaveAs _ Filename:=vvv, _ FileFormat:=xlWorkbookNormal Application.DisplayAlerts = True End Sub このマクロの動作を説明します。仮にABCという名のエクセルファイルを開くとします。 ABC_OLD.xlsというファイルをカレントフォルダで探します。 ABC_OLD.xlsが有ったら、ABC_OLD_OLD.xlsというなで、ファイルをセーブします。 ABC.xlsのファイルをABC_OLD.xlsという名で、セーブします。 このマクロを使うと、ファイルオープン時に時間がかかるようになります。

39call
質問者

補足

ありがとうございます。 [ツール]-[マクロ]-[マクロ]でauto_openを実行すればうまくいくのですが、ブックを開いたときは更新されません。 このマクロは「Thisworksheet」、「標準モジュール」のどちらに記述すれば良いのでしょうか。 それと「標準モジュール」には「他の人が開いていたら開かない」「ユーザフォームを表示する」が既に入っています。 すいませんが、よろしくお願いいたします。

  • fever
  • ベストアンサー率43% (32/73)
回答No.1

自動バックアップを取るのは、開いた時じゃないと駄目なのでしょうか? 保存時にバックアップを取る方法なら簡単にあるのですが、それでは駄目なのでしょうか?

39call
質問者

補足

ありがとうございます。 自分がデータを壊すときはファイルを開いて何かしているときが多いので、開く前にバックアップしたかったのです。

関連するQ&A