- ベストアンサー
マクロ 日時の付いたファイルを自動でバックアップ
- Excelのファイルを開いた時に自動でバックアップファイルを作成する方法について教えてください。
- バックアップファイルには、月日時分の情報をファイル名に付けたいです。
- 既存の記述を活用して、バックアップファイルに日時を付ける方法が分かりません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 開く時に使うわけですよね。 以下のコードは、開きながら、VBA外部で仕事をするので、すぐに開くはずです。 ファイルが大きい場合は、VBA自体のメソッドを使うと、時間が掛かることがあります。 これは、私がいつも使っているものを書き換えたものです。 '// Private Sub Workbook_Open() Dim objFso As Object Dim mDate As String Dim mPath As String Dim Fn As String mDate = Format$(Now(), "yyMMddhhnn") '年号は2桁にする/不要ならyyを取る mPath = ThisWorkbook.Path Fn = ThisWorkbook.Name If Not Fn Like String(10, "#") & "*" Then '10桁をチェック/yyを取ったら8にする '月日時分が先頭にある、バックアップは取らない '=バックアップファイルからは、孫ファイルは作らない 'ただし、バックアップ名が同じであっても上書きする Set objFso = CreateObject("Scripting.FilesystemObject") objFso.Copyfile mPath & "\" & Fn, mPath & "\" & mDate & Fn Set objFso = Nothing End If End Sub
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>バックアップファイルにしたい マクロの使い方が間違っています。 「CreateBackup:=True」はバックアップとして保存する指定ではありません。 作成例: private sub workbook_Open() dim myFile as string myfile = thisworkbook.name if isnumeric(left(myfile, 14)) then myfile = mid(myfile, 15, 99) end if thisworkbook.savecopyas thisworkbook.path & "\" & format(now, "yyyymmddhhmmss") & myfile end sub
お礼
早速のご回答ありがとうございました。 試してみまして、思った通りの結果がでました。 その上、アドバイスも頂きありがとうございます。 お見事でした。 お忙しいところ、本当にありがとう御座いました。
補足
補足の欄で申し訳ありませんが、この夏頃は、度々お世話になりありがとうございました。 今回も、またご回答いただきありがとうございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
FNameに付加するだけ? FName = ThisWorkbook.Path & "\" & Format(Now, "mmddhhmm") & ThisWorkbook.Name
お礼
早速のご回答ありがとう御座いました。 何とシンプルかつ、的確なご回答!!関心いたしました。 希望通りの結果が出まして、感激しております。 それにしても、色々な手法があるものと感心しております。 孫ファイルやひ孫ファイルが必要な時も有ります。 本当に、ありがとうございました。
- webnas
- ベストアンサー率30% (3/10)
もしかしてこういうことでしょうか? 元のファイル名が数値12桁だと使えませんが・・ Private Sub Workbook_Open() Dim FName As String If IsNumeric(Left(ThisWorkbook.Name, 12)) Then FName = ThisWorkbook.Path & "\" & Format(Now, "yymmddhhmmss") & Mid(ThisWorkbook.Name, 13, Len(ThisWorkbook.Name) - 12) Else FName = ThisWorkbook.Path & "\" & Format(Now, "yymmddhhmmss") & ThisWorkbook.Name End If Application.DisplayAlerts = False ActiveWorkbook.SaveAs FName, CreateBackup:=True Application.DisplayAlerts = True End Sub
お礼
早速のご回答ありがとうございました。 お礼、遅くなり申し訳ありません。 一番に回答頂き、ありがとうございます。 急きょの出張で遅くなりましたが、早速、試してみまして、 思った通りの結果となりまして、感激しております。 申し分御座いません。 ありがとうございました。
お礼
早速のご回答ありがとうございました。 何と、動きの早いこと! それに、孫ファイルが出来ないとは、素晴らしい!! 孫もひ孫も・・・出来るものと決めていて、思いも寄りませんでした。 思っていた以上のご回答ありがとうございました。