1

我很难让SaveAs命令正常工作。对于本地医院,有从模板文件创建的患者图表,在其中输入患者数据,然后手动重命名(使用另存为),然后将其复制到另一个位置作为备份。模板被一遍又一遍地重复使用。

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

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

问题:运行时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
4

1 回答 1

1

除了设置Cancel = True以防止默认保存行为外,还添加:

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

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

于 2013-07-03T17:38:46.923 回答