由VBA

时间:2017-09-13 16:18:37

标签: vba excel-vba runtime-error excel

Mystery Worksheet Objects

我一直在创建一个包含各种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

这些都在工作簿中用作用户定义的函数,以便在尝试打开它们之前检查计算机上是否存在包含其他2个工作簿的文件夹。

ThisWorkbook现在是ThisWorkbook1,它可以解释为什么,正如工作簿中的论坛所计算的那样,它无法找到正确的路径而只是崩溃。

但这并没有解释这些额外物品的来源。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我在Office365上遇到了同样的问题,进行了代码审查,发现我使用相同的名称来表示公共常量和函数的参数。重命名参数并重新运行宏后,就再也没有发生。