SaveAs命令不起作用,但SaveCopyAs

使用SaveAs命令正常工作时遇到了很多困难。 对于本地医院,有一个病人图表是从一个模板文件创build的,在这个图表中input患者数据,然后手动重命名(使用save-As),然后复制到另一个位置作为备份。 该模板重复使用一遍又一遍。

我的代码的目标是这个自动化这个过程。 所以我想保存到两个不同的位置,从一个模板文件开始。 模板文件不应该被覆盖。 在模板中,用户分别在单元格K1和N1中设置部门名称和床位号码。 这些字段确定该文件夹中的文件夹和文件名。

当按下保存button时,我的代码开始运行。 我使用SaveCopyAs保存备份文件,之后我想使用SaveAs保存到我的主文件夹。 另存为应该将这个新文件设置为我的工作文件,因此不能覆盖我的模板。 至less这是我相信的…

问题:运行SaveAs ,Excel崩溃(没有任何明确的错误信息)。 奇怪的事情(对我来说)是,当我用SaveCopyAsreplaceSaveAs时不会崩溃。

问题:为什么Excel会在这个时候崩溃? 有没有办法来解决或避免这种行为? 我找不到一个合适的解决scheme,不会改变我的模板。 任何帮助或build议都比欢迎。

下面的代码放在我的“ThisWorkbook”文件夹中,每次点击“保存”button时执行。

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) department = Range("K1").Value 'Name of department: CHIC, THIC, ICB or NCIC bedNumber = Range("N1").Value 'bednumber or roomnumber: Bed 1. Bed 2 or Room 1, Room 2. newFileName = department & "\" & bedNumber & ".xls" If IsEmpty(department) Then MsgBox "You haven't entered a department. Please try again." ElseIf IsEmpty(bedNumber) Then MsgBox "You haven't entered a bed or room number. Please try again." Else ActiveWorkbook.SaveCopyAs "C:\myBackupFolder\" + newFileName End If ActiveWorkbook.SaveAs "C:\myPrimaryFolder\" + newFileName 'Doesn't work 'ActiveWorkbook.SaveCopyAs "C:\myPrimaryFolder\" + newFileName 'Does work, but I end up with a messed up template! End Sub 

除了设置Cancel = True来防止默认的保存行为,添加:

 Application.EnableEvents = False ActiveWorkbook.SaveAs "C:\myPrimaryFolder\" + newFileName 'Doesn't work Application.EnableEvents = True 

以防止再次调用相同的过程(并再次..)。 这可能是为什么它崩溃。