Vba 某些计算机上无法识别ActiveSheet对象

Vba 某些计算机上无法识别ActiveSheet对象,vba,excel,excel-2007,Vba,Excel,Excel 2007,我有一个Excel2007VBA项目,它在我的计算机和其他一些计算机上运行良好,但在一些计算机上,它在引用ActiveSheet对象的行上遇到错误32809。我发现在受影响的计算机上,无法识别ActiveSheet对象。ActiveWorkbook对象工作正常 在受影响的计算机上,如果创建新工作簿、引用ActiveSheet并激活受影响的工作簿,ActiveSheet对象将正常工作;我可以获取ActiveSheet的Name属性 在我的计算机上,VBA编译得很好。但在受影响的计算机上,Compi

我有一个Excel2007VBA项目,它在我的计算机和其他一些计算机上运行良好,但在一些计算机上,它在引用ActiveSheet对象的行上遇到错误32809。我发现在受影响的计算机上,无法识别ActiveSheet对象。ActiveWorkbook对象工作正常

在受影响的计算机上,如果创建新工作簿、引用ActiveSheet并激活受影响的工作簿,ActiveSheet对象将正常工作;我可以获取ActiveSheet的Name属性

在我的计算机上,VBA编译得很好。但在受影响的计算机上,Compile会在“Option Explicit”行上停止并返回错误:

“包含对找不到的对象定义的引用。”但“引用”对话框中的选定项看起来正常

在受影响的计算机上,我们已检查更新,但它们是最新的;我认为它可以远程处理更新

我的想法是:

  • 这种奇怪的行为表明工作簿已损坏,但它在某些计算机上运行良好的事实表明并非如此。所有计算机都在Excel2007SP3上
  • 另一方面,它在某些计算机上运行正常,但在其他计算机上运行不正常,这表明受影响计算机上的Excel存在问题
有什么想法吗

更新:

根据要求,示例代码:

Sub main()
    Debug.Print ActiveSheet.Name
End Sub
更新#2:

我认为这可能是工作簿损坏,于是重新构建了工作簿。但新的工作手册也有同样的问题

在发生错误的计算机上,我将文件的副本保存为xlsx,没有宏。然后我关闭并打开该文件,以确保宏已消失。然后我从原始文件中复制了所有VBA。然后我用宏重新保存为xlsm

该文件在受影响的计算机上运行良好,在原始计算机上也运行良好

但是,在原始计算机上,如果我保存了文件,然后将其复制到受影响的计算机上,则返回到原始问题


所以这给了我一个笨拙的解决方法。接下来,我将尝试KB文章3025036,安装MS14-082安全更新后出现“无法插入对象”错误。不是相同的错误消息,但值得一试。

请您发布代码好吗? 还有一件事需要检查,即在未验证Excel.ActiveSheet对象的类型的情况下,您不会尝试将其放入工作表对象中。活动表也可以是图表对象(即图表表)


要检查是否损坏,请将所有内容复制/粘贴到新工作簿中,导出代码模块并将其重新导入新工作簿,然后编译。如果这能解决问题,那么很可能是损坏。

只有在删除所有列表框控件后,此问题才得以解决。listbox控件已经存在很长时间,并且在受影响的机器上运行良好;我不知道是什么突然改变,使他们无法在某些计算机上工作

作为一种解决方法,我将尝试在运行时删除/创建listbox,而不是使用相同的listbox控件。这样,它总是在那台计算机上创建一个新的列表框

更新:

事实证明,问题出在一个错误的Office更新上——从MS14-082安全更新中更新KB2596927。在11月份更新发布时,我们还没有遇到问题,但最近我们公司的IT部门尝试从所有计算机上删除KB2596927。然而,在某些情况下,移除并不成功。KB2596927仍然在我的和其他一些上,但从一些上消失了

我发现,如果在出现问题的计算机上,我删除了VBA并将其添加回,那么它在该计算机和我们所有的计算机上都能工作。但是,当我修改了计算机上的VBA并将其保存并分发工作簿后,问题又出现了


因此,我删除了KB2596927 Office更新,并修复了该问题。现在我可以在我的计算机上修改工作簿中的VBA,并分发工作簿,它对每个人都正常工作。

我也有同样的问题。VBA编译器在第行中显示了一个问题:

ActiveSheet.Shapes("Key_1").Visible = False
它没有重新组织功能(以及形状)

我解决这个问题很简单

我将同一张表(2018年价目表)复制到“2018年价目表(2)”

然后,我删除了“2018年价目表”,然后

我将“2018年价目表(2)”重命名为“2018年价目表”…非常简单

问题已经解决了


谢谢…

检查VBE的工具► 选择权► 一般的► 需要变量声明。在不编译的计算机上关闭。使用不明确的
…As Object
变量声明可能会混淆编译器。@Jeeped:问题不在于它不会编译;这只是我尝试过的。问题在于无法识别ActiveSheet对象。不是这个:??@TimWilliams:Thanks,我会尝试解决这个问题,看看这是否是问题所在。我看到的症状与我在那里看到的报告不同,但似乎有一系列的症状导致这个问题,所以谁知道呢。我会找出答案。错误发生在一行,ActiveSheet对象被直接使用,而不是设置为变量。
ActiveSheet.Shapes("Key_1").Visible = False