另存为后Excel崩溃

时间:2018-11-28 19:46:42

标签: excel vba excel-vba excel-2010

我继承了一个excel项目,负责执行该项目以实现自动化和进一步开发。

用例存在
-有订单进来
-用户打开基本(根)Excel文件
-输入相关信息(客户,订单,数据,任务等)
-并将新任务文件保存在正在进行任务的文件夹中
-离开基础(根)excel基础并准备下一个订单。

新任务文件需要具有某种已排序的文件名结构。

我的问题出现在ActiveWorkbook.SaveAs文件名上。

当我逐步浏览(F5)这些行时,它将经历所有步骤,创建文件名,显示“另存为” UI,正确显示正确的文件夹和建议的文件名,并实际保存文件。当我从ErrHandler和最后一个Application.EnableEvents = yes中出来时,它崩溃了。似乎是关闭基本文件,打开新文件,或将活动工作簿转移到新的保存文件。

如果可以停止崩溃,那还可以。

If criticalInput then
    Msgbox “U been bad, U Shall not PASS!”, vbCritical ‘Not actual text or box showing, just for demo.
Else
    Dim fileSaveName As Variant

    '### It Crashes after saving (possible at opening)
    fileSaveName = Application.GetSaveAsFilename( _
    InitialFileName:=tasksfolder & "\" & suggestFilename, _
    fileFilter:="Excel-projectmappe med aktive makroer (*.xlsm), *.xlsm")

    If fileSaveName  False Then
        '### here is where you would save your file
        DoEvents ‘ Debugging research tells this should be here. Not that is changes anything.
        ActiveWorkbook.SaveAs fileSaveName ‘ During dev this has been disabled.
    End If ' SaveAs
End If ' criticalInput

ErrHandler:
    '## Reset back to default
    Application.DefaultFilePath = strDefault

    Application.EnableEvents = True
End Sub

调试
-如果禁用SaveAs并仅在基本(根)excel文件上工作,则可以很好地保存文件。
-我可以打开新任务文件并保存好。 (只是一个关于覆盖的bug,是/否)
-调试研究表明,在SaveAs之前我需要DoEvents
-调试研究还表示仅提供了最相关的参考(在我的情况下,请取消选择OLE Automation)
-在调试过程中,我还创建了AfterSave()和Open()。它们在正常操作期间正常触发,但在SaveAs崩溃时失败。例如,当我禁用SaveAs或正常打开excel图书时。

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    On Error GoTo ErrHandler
If Success Then Application.EnableEvents = False 'MsgBox "Success save", vbInformation ' for debugging purposes. End If
ErrHandler: Application.EnableEvents = True End Sub
Private Sub Workbook_Open()
    'MsgBox "I haz been opened, yehawww", vbInformation ' debugging
End Sub

0 个答案:

没有答案