另存为命令不起作用,但SaveCopyAs确实(SaveAs command does not wo

2019-10-18 07:52发布

我有很多困难得到一个SaveAs命令才能正常工作。 对于本地的医院,有哪些是从模板文件创建之后将其更名为手动病历,在其中输入病人数据(使用另存为),然后复制到另一个位置作为备份。 该模板重复使用一遍又一遍。

我的代码的目标是这个自动执行此过程。 因此,我要保存到两个不同的位置,从模板文件开始。 模板文件不应该被覆盖。 在模板中,用户设置在电池K1和N1,repectively部门名称和床号。 这些字段确定该文件夹中的文件夹和文件名。

当按下保存按钮,我的代码开始运行。 我使用SaveCopyAs保存备份文件之后,我想用另存为保存到我的主要文件夹中。 另存为应设置这个新的文件是我的工作文件,因此不能覆盖我的模板。 至少,这是什么,我相信...

问题是:当运行SaveAs ,Excel的崩溃(没有任何明确的错误信息)。 奇怪的(对我)是,是,当我更换不会崩溃SaveAsSaveCopyAs

问题:为什么在这一点上做的Excel会崩溃吗? 有没有办法解决或避免这种行为? 我找不到不改变我的模板一个合适的解决方案。 任何帮助或建议,欢迎。

下面的代码放置在我的“的ThisWorkbook”的文件夹,并执行我点击“保存”按钮上每一次。

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

Answer 1:

以及设置Cancel = True要防止默认保存行为,添加:

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

为了防止同样的程序再次调用(又一次..)。 这可能是为什么它崩溃。



文章来源: SaveAs command does not work, but SaveCopyAs does