プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2003/10/27 16:06

私の場合は標準モジュールに書いてあります。



普通にオープン時に実行されています。

他のマクロの関係で、実行されないのであれば、私の手におえません。
    • good
    • 1

このマクロでどうでしょうか。



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という名で、セーブします。

このマクロを使うと、ファイルオープン時に時間がかかるようになります。

この回答への補足

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

補足日時:2003/10/24 12:06
    • good
    • 0

自動バックアップを取るのは、開いた時じゃないと駄目なのでしょうか?



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

この回答への補足

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

補足日時:2003/10/24 12:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!