首页 > 解决方案 > Excel 工作表宏是否有原因在 Excel 2013 中损坏但在 Office 355 中工作正常?

问题描述

因此,我为一家与时俱进的公司工作,并要求员工在一天结束时手动将销售数据输入电子表格。我厌倦了,所以我创建了一个单独的 VBA Excel 程序来自动化它。

在过去的两个月里,它一直运行良好,但似乎无缘无故地损坏了我最近运行程序时正在改变的电子表格。尝试在工作 PC 上打开电子表格并启用宏会导致 Excel (2013) 崩溃。不过,打开其他工作表并在其上启用宏可以正常工作。

我尝试通过电子邮件将其发送给自己以找出原因,但它可以正确打开并且我的 Excel 版本(Office 365)没有问题

我知道损坏必须在我的程序运行之前或刚开始运行之后发生,因为它在更改/输入任何数据之前执行电子表格的备份,并且备份在工作 PC 上也已损坏。

尝试简化一百行代码和 5 个辅助函数左右;它打开所需的文件,Workbooks.Open (ThisWorkbook.path & "\" & file)其中文件只是要更改的工作簿的名称;然后它会执行备份并删除超过 7 天的备份。

这是通用备份代码:

Private Sub deleteBackup(folderName As String)
    Dim FSO As Object

    Set FSO = CreateObject("Scripting.FileSystemObject")
    For Each fcount In FSO.GetFolder(ThisWorkbook.path & folderName).Files
        If DateDiff("d", fcount.DateLastModified, Now()) > 7 Then
            Kill fcount
        End If
    Next fcount
End Sub

Private Sub backup(fileName As String)
    Dim Monthly As Workbook
    Dim dateStamp As String
    dateStamp = Format(returnDailyDate(), "dd.mm.yyyy")

    ' Check if folders exist, if they don't, create them
    If Dir(ThisWorkbook.path & BackupPath, vbDirectory) = vbNullString Then
        MkDir (ThisWorkbook.path & BackupPath)
    End If

    Set Monthly = Workbooks(MonthlyPath)
    Monthly.Save

    Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
    FileSystemObject.CopyFile ThisWorkbook.path & "\" & MonthlyPath, ThisWorkbook.path & BackupPath & fileName & dateStamp & FileExtension
End Sub

为什么会发生这种情况,或者为什么它在 2013 年不起作用但在 365 年起作用,是否有合乎逻辑的原因?如果这是一个随机的不可避免的小问题,涉及内存不足或其他什么(我们只是说工程开发部门不是最好的),或者我的程序是否导致了损坏并且将来可能再次发生这种情况。

谢谢你的时间。

更新:所以发送office 365打开并在365工作的工作簿;回到工作电脑,现在工作正常。所以我假设 365 比 2013 有更好的纠错,但我仍然不知道是什么导致了错误。

标签: excelvbacrash

解决方案


推荐阅读