错误:Microsoft Excel已停止工作 - 但我没有改变任何内容

时间:2017-12-15 21:42:29

标签: excel vba excel-vba error-handling excel-2016

我有一个继承的电子表格,可以自动运行一些VBA代码,然后退出。这是10月初的最后一次运行并且运行良好。现在,它失败并出现此错误:

  

Microsoft Excel已停止工作

     

Windows可以尝试恢复您的信息并重新启动该程序。

     

- >重启程序

     

- >调试程序

如果我尝试重新启动,它会给我

  

自动化错误发生异常。

(实际上,它通常只给我关闭或调试程序的选项,但我在一台机器上获得了一次重启选项,这是另一个信息点。)

它将一组文件名加载到一个数组中,然后通过它们读取,以便将数据加载到数据库中。对于未更改的文件来说,它是失败的,从2015年开始.Excel本身也没有变化,但这并不意味着没有对Office进行一些升级,使其行为不同。我倾向于错误处理而不是像过去那样跳过错误。

以下代码一旦到达没有值的数组条目就会失败:

    FName = Array("april2010.xls", "feb2010.xls", "jan2010.xls", "july2010.xls", "june2010.xls", _
                "mar2010.xls", "may2010.xls", "sep2010.xls", "..\FINAL-MO-BAL-2011\APRIL2011.xls", _
                "..\FINAL-MO-BAL-2011\AUG2011.xls", "..\FINAL-MO-BAL-2011\DEC2011.xls", _
                "..\FINAL-MO-BAL-2011\FEB2011.xls", "..\FINAL-MO-BAL-2011\JAN2011.xls", _
                "..\FINAL-MO-BAL-2011\JULY2011.xls", "..\FINAL-MO-BAL-2011\JUNE2011.xls", _
                "..\FINAL-MO-BAL-2011\MARCH2011.xls", "..\FINAL-MO-BAL-2011\MAY2011.xls", _
                "..\FINAL-MO-BAL-2011\NOV2011.xls", "..\FINAL-MO-BAL-2011\OCT2011.xls", _
                "..\FINAL-MO-BAL-2011\SEP2011.xls", FName2, FName3, FName4, FName5, FName6, _
                FName7, FName8, FName9, FName10, FName11, FName12, FName13, FName14, FName15, _
                FName16, FName17, FName18, FName19, FName20, FName21, FName22, FName23, FName24, _
                FName25, FName26, FName27, FName28, FName29, FName30, FName31, FName32, FName33, _
                FName34, FName35, FName36, FName37, FName38, , FName39, FName40, FName41, FName42, _
                FName43, FName44, FName45, FName46, FName47, FName48, FName49)

    If IsArray(FName) Then
        Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
        WorkbookName = ThisWorkbook.Name
        rnum = 1
        For Fnum = LBound(FName) To UBound(FName)
            Set mybook = Nothing
            On Error Resume Next
            Set mybook = Workbooks.Open(Filename:=FName(Fnum), ReadOnly:=True)

            With Application
                CalcMode = .Calculation
                .Calculation = xlCalculationManual
                .ScreenUpdating = False
                .EnableEvents = False
                .CutCopyMode = False
                .DisplayAlerts = False
                .Visible = False
            End With

            On Error GoTo 0

            If Not mybook Is Nothing Then
                On Error Resume Next

(代码继续读取并解析每个文件。)

但是,如果我注释掉数组设置的最后一行,那么它停在FName42,这是带有值的最后一个条目,它将起作用(然后一旦数组条目是,则在稍后的代码中失败空(因为2017年12月的文件还没有)。)

我不是VBA程序员,我通过放入MsgBox行并运行它直到它死掉来跟踪此部分的错误。它击中了完全杀死Excel的东西。它在我的Win10机器和我的Win7机器(以及一个同事的机器)上完成。

我们有Excel 2016,我知道我们现在也在计算机上安装了Office 365.

有什么想法可以继续处理?

0 个答案:

没有答案