保存"备份副本"没有对Excel进行更改的工作簿?

时间:2018-06-15 23:08:55

标签: excel vba excel-vba save backup

我不确定这是可能的,但也许我错过了一些明显的东西。

我想以编程方式,无形地保存"备份"工作簿的副本处于当前状态,没有"提交"对Excel的更改或破坏撤消历史记录。

示例场景:

  1. 用户打开c:\folder1\workbookA.xlsm
  2. 用户对他们可能不希望提交的工作簿进行更改
  3. 我的子网站由于计时器或其他事件而开始,并在后台保存工作簿的副本为c:\folder2\workbookB.xlsm
  4. 问题在于,创建备份副本的操作需要是"隐藏"对于用户,如果他们稍后Save close discarding changes,结果将与我的备份副本未创建时相同。

    这意味着:

    • 标题栏中的文件名未更改,
    • Ctrl + Z / 撤消仍然有效,
    • 如果用户关闭工作簿,系统仍会提示他们保存更改?
      (轻松workbook.Saved = False
      • 如果他们选择,那么工作簿将像普通一样保存 (替换c:\folder1\workbookA.xlsm处的文件。)
      • 如果他们选择,则工作簿将被关闭,c:\folder1\workbookA.xlsm处的文件仍为原始未经修改的格式,好像没有进行任何更改在步骤#2中。

    据我所知,workbook.SaveAs总是更新工作簿的名称并清除"撤消"历史记录,所以没有保留更改就无法关闭文件。 谢谢!

1 个答案:

答案 0 :(得分:3)

我坐在那里思考,"如果只有保存副本为... 选项......"

然后我意识到解决方案正好在我面前:the .SaveCopyAs method

  

Workbook.SaveCopyAs方法(Excel)

     

将工作簿的副本保存到文件中,但不会修改内存中打开的工作簿。

     

语法

     

expression . SaveCopyAs( Filename ) < / p>      

      
  • expression - 表示Workbook对象的变量。
  •   
  • Filename Variant (必填) - 指定副本的文件名。
  •   

注意:文档错误地说Filename参数是可选(这没有意义)。
我已经edited MSDN页面,等待批准。