ユーザーがシートを保存したときに実行するコードを作成しました。このコードは別のコピーを保存し、元のファイルを再度保存します。 ただし、元のファイルを再度保存すると、「after_save」トリガーが発生し、無限に保存されます。 ここで解決策を確認してくださいStackOverFlowしかし、私の問題を解決したものは見つかりません。VBAでafter_saveのコピーを保存し、無限ループに入ります。
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Call SaveToLocations
End Sub
Sub SaveToLocations()
Dim WoExt, Ext, BkPath, nDateTime As String
Static OrigName As String
'defining variables
nDateTime = Format(Now, "YYMMDD")
OrigName = "C:\Users\xxx.xxx\Desktop\vbatest\test orig.xlsm"
Ext = ".xls"
WoExt = "test orig"
BkPath = "C:\Users\xxx.xxx\Desktop\vbatest\Backup\"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs (BkPath + WoExt + " - Backup - " + nDateTime + Ext)
ActiveWorkbook.SaveAs OrigName
Application.DisplayAlerts = True
End Sub
セーブループを避けるために 'If Workbook.Saved = True'を使用してください。 – Wolfie
アーカイブを保存したい場合は、ユーザがワークブックを開いたときに実行する必要があります変更が適用され、ユーザーがそれを保存しようとしているときではありません。あなたのいわゆるオリジナルは、単に編集されたブックの別のコピーです。 – Masoud
アプリケーションロジックの一部として、保存するかどうかを示す変数 'Public SaveCopy As Boolean'を管理する必要があります。 –