- ベストアンサー
エクセルファイル起動時に起動前のファイルを保存する
エクセル2002+XPhomeです。 先程マクロつきのファイルを開き編集していたところ 久しぶりに突然ハングってエラー情報送信のパネルになり 送信しないボタンを押したところ 自動回復するチェックボックスがオンになっていたらしく 自動回復されてしまいましたが回復不能なエラーとかで 意味不明なファイルに置き換わってしまいました・・・ 回復できないなら上書きしてくれるな!! って気持ちでいっぱいですが そんなこと言ってもしょうがないのは百も承知なので 対策を、ということで表題のとおり ファイル起動時に起動前の状態を特定のディレクトリに保存しておきたいです。 できれば3世代くらいを残すような仕様でマクロを組むことは できますでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
FileCopy ステートメントは開いているファイルには無効のようで、ファイルを開いた時に開いたファイルのOpenマクロで自身をコピーする方法は解りませんでした。(Excel97の場合です。ひょっとしたら2002では可能かも) なので、ちょっと変な方法で考えてみました。 試すならヒント程度に捉えて、テスト環境で試して下さい。 1.新規ブックの標準モジュールにサンプルマクロをコピペしてテスト用フォルダに Open.xls の名前で保存します。 2.同じフォルダにバックアップしたいExcelファイル(例は Moto.xls )を置きます。 3.Open.xls を開く事で、Moto.xls のコピーを作ってから Moto.xls を開くようになります。(BackUp1_MOTO.XLS ~ BackUp3_MOTO.XLS まで、絶えず BackUp1_MOTO.XLS が最新) Sub Auto_Open() Dim myPath As String, myName As String Dim BK1 As String, BK2 As String, BK3 As String Dim OpenName As String, Cnt As Integer Cnt = 0 myPath = ThisWorkbook.Path & "\" OpenName = UCase("Moto.xls") BK1 = myPath & "BackUp1_" & OpenName BK2 = myPath & "BackUp2_" & OpenName BK3 = myPath & "BackUp3_" & OpenName myName = dir(myPath, vbNormal) Do While myName <> "" If myName <> "." And myName <> ".." Then If UCase(myName) Like "BACKUP*_" & OpenName Then Cnt = Cnt + 1 End If myName = dir Loop Select Case Cnt Case 1 Name BK1 As BK2 Case 2 Name BK2 As BK3: Name BK1 As BK2 Case 3 Kill BK3: Name BK2 As BK3: Name BK1 As BK2 End Select FileCopy myPath & OpenName, BK1 Workbooks.Open (myPath & OpenName) ThisWorkbook.Close End Sub 正直あんまり良い方法では無いので、世代バックアップをしたいならバックアップソフトを使った方が無難でしょう。(^^; http://www.vector.co.jp/vpack/filearea/win/util/backup/index.html
その他の回答 (1)
- wojaru
- ベストアンサー率26% (16/60)
アプリケーションのバックアップの事でしたら、FlashuBackがお勧めです。 Xpでも問題無く使えてます。
お礼
レスありがとうございます。 そんなソフとがあるんですね。 知りませんでした。 ありがとうございました。
お礼
レスありがとうございます。 開いてから自身を保存するというのは 確かにちょっと変な感じがしますね。 OpenとMotoっていう考え方は非常に参考になりました。 ということで同じ(?)考え方で.batファイルを作成しました。 cd backup del file_3.xls copy file_2.xls file_3.xls del file_2.xls copy file_1.xls file_2.xls del file_1.xls copy file.xls file_1.xls cd .. copy file.xls backup\file.xls start file.xls 大変参考になりました。 マクロはかなりの初心者なので今回のソースは今後の勉強に役立てたいと思います。 ありがとうございました。