Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在一台计算机上打开工作簿错误代码32809,但在另一台计算机上未打开_Excel_Vba - Fatal编程技术网

Excel 在一台计算机上打开工作簿错误代码32809,但在另一台计算机上未打开

Excel 在一台计算机上打开工作簿错误代码32809,但在另一台计算机上未打开,excel,vba,Excel,Vba,我有一个excel 2013宏工作簿 此工作簿在过去6个月内一直运行良好。今年的第一天,我在下面的代码行中遇到了一个问题。这行代码所做的只是在打开工作簿时将activex复选框控件设置为true Sheets(WSCHARTS).chkAllJPM.value = True 我通过上一篇文章设法解决了这个问题。答案是跟随。但是,第一天回到办公室的团队成员对此工作簿有问题。同样,他们每天都在使用这个工作簿,没有任何问题。代码在上面的同一行上调试,错误代码为32809 我试着按照为我解决问题的相同

我有一个excel 2013宏工作簿

此工作簿在过去6个月内一直运行良好。今年的第一天,我在下面的代码行中遇到了一个问题。这行代码所做的只是在打开工作簿时将activex复选框控件设置为true

Sheets(WSCHARTS).chkAllJPM.value = True
我通过上一篇文章设法解决了这个问题。答案是跟随。但是,第一天回到办公室的团队成员对此工作簿有问题。同样,他们每天都在使用这个工作簿,没有任何问题。代码在上面的同一行上调试,错误代码为32809

我试着按照为我解决问题的相同说明进行操作,但没有任何乐趣。我无法在我的计算机上复制这些问题。不确定是什么导致此错误

下面是子程序。请注意WSCHARTS是公共常量字符串-其值为“charts”

更新

因此,我创建了一个新工作簿,只需在Sheet1上放置一个activex复选框控件,并将其重命名为chkTest

我在下面添加了代码。代码在我的电脑上有效,但在我同事的电脑上无效。这现在相当令人沮丧。有什么想法吗

 Private Sub Workbook_Open()

    Sheets("Sheet1").chkTest.Value = True

 End Sub
另一次更新

不确定这是否与我的问题有关。当我按照前面提到的说明操作时,我确实注意到在我的c:\users\username\Appdata\local\Temp\VBE目录中有一个我的同事没有的额外文件

我有一个MsForms.exd和RefEdit.exd。我的同事只有MsForms.exd文件。这会导致任何问题吗

希望我的最后一次更新

因此,将上面的更新代码直接更改为下面的代码现在可以在我们的两台计算机上运行。有人能解释为什么或者区别是什么吗

Private Sub Workbook_Open()

Dim ws As Worksheet
Set ws = Sheets("Sheet1")
ws.OLEObjects("chkTest").Object.Value = False

End Sub

只有一个解决方案是100%有效的(相信我,我一直在研究(可以说)公司环境中所有可能的解决方案):摆脱嵌入的ActiveX控件

国际海事组织,你有三个选择:

  • 选项1是将控件的功能移动到功能区中,可能需要根据ActiveX控件添加用户表单(当然,命令按钮不需要用户表单)。这里有很多工作,但这是最干净、最安全的方式

  • 选项2是用表单控件替换ActiveX控件。这真的很糟糕,因为您将失去ActiveX控件提供给您的大部分功能,但它仍然是一个选项

  • 选项3是用形状对象替换ActiveX控件;需要处理一些新的特定问题(例如,保护/锁定),但您可以获得一系列漂亮的格式选项:)


  • 在任何情况下,您都需要返工/更新工作簿。我主要使用了选项1,还有一些选项3。请注意,您可以在同一个应用程序中混合使用上述选项。

    在尝试了对我们不起作用的建议.exd文件删除后,考虑在许多文件中重写vb代码,我们最终通过卸载MS KB更新并在后续更新中不允许它来解决此问题。(办公室2013 KB2726958;2010 KB2553154;2007 KB2596927)。
    我们希望微软能找到一种优雅的方法,在未来的更新中无缝解决Active X问题。

    微软于2014年12月发布了一项更新,该更新导致使用ActiveX控件的Excel应用程序出现错误。根据计算机上Excel的版本应用修复程序

    关闭所有Office应用程序

    对于Excel 2007,请安装Microsoft Update KB2596927

    对于Excel 2010,请安装Microsoft Update KB 2553154

    对于Excel 2013,请安装Microsoft Update KB 2726958

    打开文件管理器

    在地址窗口中键入%Temp%

    单击Excel 8.0文件夹


    删除所有*.exd文件

    我的问题解决了,我从%temp%文件夹中删除了所有文件 重要的一点是,用户帐户必须具有管理员权限 这解决了我的问题
    大家好,我希望这能帮助很多人。

    您提到的错误代码32809与打开工作簿错误有关。检查打开工作簿的位置。如果可能的话,发布整个代码块。需要更多信息。此外,如果工作簿在1台计算机上工作,而不是在其他计算机上工作,请检查文件/文件夹的可访问性。打开工作簿时,它将调用一个子例程。单独运行例程仍然会在同一位置导致相同的错误。我们对文件和directorydo debug.print具有相同的权限,并使用F8功能键运行代码。检查每个变量/对象是否分配正确(即,您为新工作簿设置的“wb”值是否包含正确的值)。最后要检查的是工作表是否已锁定。同样,需要更多的代码。我已逐步通过代码,所有值均符合预期值&工作表未锁定。我已经发布了代码,但是我不认为代码是问题所在Excel版本相同吗?安全设置是否相同?Excel选项->信任中心->信任中心设置->ActiveX设置->启用所有控件”/“安全模式”,等等?
    Private Sub Workbook_Open()
    
    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")
    ws.OLEObjects("chkTest").Object.Value = False
    
    End Sub