在一台计算机上打开工作簿错误代码32809,而不是另一台计算机

我有一个Excel 2013macros观工作簿。

这个工作手册在过去的6个月里一直很好。 今年的第一天,我有一个问题在下面的代码行。 所有这些代码都是在打开工作簿时将activexcheckbox控件设置为true。

Sheets(WSCHARTS).chkAllJPM.value = True 

我设法通过以前的post解决这个问题。 答案是按照说明 。 然而,第一天回到办公室的一名团队成员在这本工作手册上遇到了问题。 他们再一次使用这个工作簿,没有任何问题。 代码在错误代码号32809的同一行上进行debugging。

我试着按照相同的指示来解决这个问题,但没有喜乐。 我无法在计算机上复制这些问题。 不知道是什么原因造成这个错误?

这是子程序。 请注意WSCHARTS是公共常量string – 它的值是“图表”

 Sub SetDefaultSetting() ' set the default view upon opening the spreadsheet Dim ws As Worksheet Dim wsTime As Worksheet Set wsTime = ThisWorkbook.Sheets(WSTSJPM) Set ws = ThisWorkbook.Sheets(WSCHARTS) ' get last date Dim lRow As Long lRow = wsTime.Range("A65536").End(xlUp).Row ws.DropDowns("DropDownStart").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address ws.DropDowns("DropDownEnd").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address ws.Range(COLDATES & "1") = 1 ' start date is 12 dec 2013 ws.Range(COLDATES & "2") = lRow - 1 ' latest avaiable date ' control are linked to cells so just need to change their cell values ws.Range("C1") = 6 ws.Range("D1") = 7 ws.Range("E1") = 8 ws.Range("F1") = 9 ws.Range("G1") = 10 ' rest should be blank ws.Range("H1") = 1 ws.Range("I1") = 1 ws.Range("J1") = 1 ws.Range("K1") = 1 ws.Range("L1") = 1 Sheets(WSCHARTS).chkAllJPM.value = True ws.OLEObjects("chkBOAML5").Object.Enabled = False Set wsTime = Nothing Set ws = Nothing 

UPDATE

所以我创build了一个新的工作簿,只需在Sheet1上放置一个activexcheckbox控件,然后将其更名为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 

只有一种解决scheme可以100%工作(相信我,我一直在corp环境中(可以说)解决所有可能的解决scheme): 摆脱embedded式ActiveX控件

你有三个select,IMO:

  1. 选项1是将控件的function移动到function区,也许根据ActiveX控件添加一个用户窗体(当然,不需要用户窗体)。 这里有相当多的工作,但这是最干净和最安全的方法。

  2. 选项2是用窗体控件replaceActiveX控件。 这真的很糟糕,因为你将失去ActiveX控件的大部分function,但它仍是一个选项。

  3. 选项3是用Shape对象replaceActiveX控件; 一些新的具体问题来处理(例如,保护/locking),但你会得到一个美丽的范围格式化选项:)

无论如何,您将需要返工/更新您的工作簿。 我主要使用了选项1和一些选项3.请注意,您可以在同一个应用程序中混合使用上述选项。

在尝试推荐.exd文件删除,这些删除不适合我们,并考虑重写许多文件中的VB代码,我们终于解决了这个问题,通过卸载MS KB更新,不允许它在后续更新。 (Office 2013 KB2726958; 2010 KB2553154; 2007 KB2596927)。 我们希望MS能在未来的更新中find一个优雅的方式来无缝地解决Active X问题。

Micorsoft在2014年12月发布了一个更新,它在使用ActiveX控件的Excel应用程序中导致错误。 根据机器上的Excel版本应用此修复程序。

closures所有Office应用程序

对于Excel 2007安装Microsoft更新KB2596927

对于Excel 2010安装Microsoft更新KB 2553154

对于Excel 2013安装Microsoft更新KB 2726958

打开文件资源pipe理器

在地址窗口中input%Temp%

单击Excel 8.0文件夹

删除所有* .exd文件

我的问题已经结束我从%temp%文件夹中删除所有文件一个重要的事情是用户帐户必须具有pipe理员权限这解决了我的问题所有的问候,我希望这可以帮助很多。