VBA添加的神秘Excel工作表对象

VBA添加的神秘Excel工作表对象,vba,excel,runtime-error,Vba,Excel,Runtime Error,我一直在创建一个包含各种VBA的.xlsm工作簿。它只是将其他两个工作簿中的数据复制到表中,然后刷新基于这些表的数据透视表,以更新主工作簿上的图表。我以前在不同的工作手册中做过的所有事情都没有问题。在处理工作簿时,我在几天内自然地打开、保存并关闭了工作簿 通常,既然我相信工作簿即将完成,它在打开时出现了一个小故障。起初我根本无法打开该文件,因为它会立即崩溃。只有将文件保存到onedrive并再次下载回来,我才能保持文件的打开状态以查看发生了什么(出于某种原因,我不知道为什么!) 我立刻怀疑VBA

我一直在创建一个包含各种VBA的.xlsm工作簿。它只是将其他两个工作簿中的数据复制到表中,然后刷新基于这些表的数据透视表,以更新主工作簿上的图表。我以前在不同的工作手册中做过的所有事情都没有问题。在处理工作簿时,我在几天内自然地打开、保存并关闭了工作簿

通常,既然我相信工作簿即将完成,它在打开时出现了一个小故障。起初我根本无法打开该文件,因为它会立即崩溃。只有将文件保存到onedrive并再次下载回来,我才能保持文件的打开状态以查看发生了什么(出于某种原因,我不知道为什么!)

我立刻怀疑VBA中有什么东西,所以按下Alt+F11后我遇到了这个问题(上图)

这张图片中的所有蓝色Excel对象都不是我创建的

它们不包含任何代码,而且我似乎无法将它们作为常规Excel工作表打开

我的问题是, 有人知道这是什么原因吗? 以前有人见过这个吗? 从何处开始调试此程序?

试图运行工作簿中的任何VBA都会导致它立即崩溃

我怀疑碰撞中最容易发生的VBA是在这些部分

Public Function ThisWorkbookPath()
    ThisWorkbookPath = ThisWorkbook.Path & Application.PathSeparator
End Function
传递给

Public Function CheckPath(ByVal PathString As String) As Boolean
    Application.Volatile (True)

    If Strings.Right(PathString, 1) = "\" Then
        CheckType = vbDirectory
    Else
        CheckType = vbNormal
    End If

    If Len(Dir(PathString, CheckType)) > 0 Then
        CheckPath = True    
    Else
        CheckPath = False
    End If

End Function
它们在工作簿中都用作用户定义函数,用于在尝试打开其他两本工作簿之前检查计算机上是否存在包含其他两本工作簿的文件夹

此工作簿现在是ThisWorkbook1,这可能解释了为什么根据工作簿中的forumla计算,它找不到正确的路径而崩溃

但这并不能解释这些额外的物体从何而来


任何帮助都将不胜感激

我刚刚遇到了与Office365相同的问题,进行了代码检查,发现我使用了相同的名称作为公共常量和函数参数。重命名参数并重新运行宏后,这种情况再也没有发生。

我只是在Office365上遇到了同样的问题,进行了代码检查,发现我对公共常量和函数的参数使用了相同的名称。重命名参数并重新运行宏后,不会再发生这种情况。

VBA,尤其是VB项目,因在编辑代码时损坏而臭名昭著。最好的解决方案是导出所有代码模块,将工作簿另存为
.xlsx
文件,然后重新打开/重新导入代码,然后再次将其另存为
.xlsm
。或者,如果你像我一样懒惰,使用Ribbon Commander。有一个免费试用版:.VBA,尤其是VB项目,因在编辑代码时发生损坏而臭名昭著。最好的解决方案是导出所有代码模块,将工作簿另存为
.xlsx
文件,然后重新打开/重新导入代码,然后再次将其另存为
.xlsm
。或者,如果你像我一样懒惰,使用Ribbon Commander。有免费试用:。