在带有DatePicker的Excel VBA中,“对象库无效或包含引用…”

我一直在做一个有很多VBA代码的Excel工作簿,现在我已经把这个文件发给了一些同事进行testing,而且在他们的计算机上不起作用。 我们都在同一家公司工作,并且拥有带有Office 2003的Windows XP SP2。

工作簿具有一个窗体,当点击一个形状时会打开它,并且它包含一些控件。 当他们点击窗体的形状时,显示以下错误:

“对象库无效或包含对无法find的对象定义的引用”

在表单中有一个DatePicker,我认为存在这个问题。 如果我从表单中删除datePicker并再次发送文件,他们不会得到这个错误信息。

我已经尝试删除这两个网站“ 微软 ”和“ lessanvaezi ”中提到的mscomct2.exd文件,但错误stilpopup。 我检查并生成新的.exd文件。

一些附加信息:

  1. 我检查他们的系统,他们有正确的位置(c:\ Winxp \ System32)文件mscomct2.ocx。
  2. 如果我打开一个空的Excel文件,进入VBA编辑器去工具 – >参考,我没有看到选项注册“Microsoft公共控制-2 6.0(SP6)”(mscomct2.ocx)。 而是我看到一个“Microsoft Windows公共控制Satellite-3 6.2)”(cmct3de.dll)。
  3. 我用datePicker发送同事文件,但没有提及“Microsoft Common Control-2 6.0(SP6)”。 在单击形状并打开表单之前,我尝试用下面的代码dinamically引用MSCOMCT2.ocx库。 它引用了“Microsoft Common Control-2 6.0(SP6)”,但仍然popup错误。

Sub RegisterCtl()

'MSComCt2.ocx strGUID = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}" ThisWorkbook.VBProject.References.AddFromGuid guid:=strGUID, Major:=1, Minor:=0 

结束小组

  1. 如果我然后去VBE编辑器中的窗体,右键单击工具箱,然后转到其他控件添加“Microsoftdate和TimePicker”控件,我看到该选项列出两次。 不幸的是,我认为,行为是一样的:datepicker符号被添加到工具箱中,但是当我将控件拖到窗体上时,popup一个msgBox,说该控件不可用。

有没有人知道什么是错的? 我能做些什么来使它在电脑上运行?

我感谢任何帮助。

编辑:

有这个问题的计算机已升级,所以我不能find具体的解决scheme,我的情况。 我select了Archers解决scheme,因为它帮助了大多数人(Most Upvotes)。

我也有同样的问题。 http://support.microsoft.com/kb/957924/en-us删除所有.exd文件使我的程序工作!

进入命令提示符并键入下面的DOS命令:

码:

CD \ Documents and Settings

DEL / S / A:H / A:-H * .EXD

我有这个问题。 我不记得是什么原因,但在你有一个date/时间select器的用户表单,把它放在userform_initialize。 代码只是添加一个文本框,如果他们没有正确的引用。 我知道它不是最好的解决scheme,但是它是一个解决方法。 由于我们的系统pipe理员,我无法在任何机器上运行regsvr32。

 Dim dtP As Object Dim hasDtPicker As Boolean On Error Resume Next Set dtP = frmSearch.Frame24.Controls.Add("MSComCtl2.DTPicker", "DTPicker1", True) If Err.Number <> 0 Or dtP Is Nothing Then hasDtPicker = False 'change "frmsearch.Frame24" to the area where you want the date and time picker to be. Set dtP = frmSearch.Frame24.Controls.Add("Forms.TextBox.1", "DTPicker1", True) dtP.Text = [todays_date].Value Else hasDtPicker = True End If ' ' formatting properties for both TextBox and DTPicker ' With dtP .Width = 67.5 .height = 18 .Left = lblNextActionDate.Left .Top = lblNextActionDate.Top + lblNextActionDate.height + 5 End With 

我认为#2是问题的根源。 如果您可以将mscomct2.ocx显示在新工作簿的“工具 – 参考”中,则可能会解决其余的问题。 你有没有尝试注册ocx? 开始 – 运行 – cmd打开一个DOS窗口。 导航到system32文件夹。 types

 regsvr32 mscomct2.ocx 

我认为这将把工具 – 参考框中的ocx,并希望修复它。 这里是一个链接,以防止Windows 7上的ocx

http://www.dailydoseofexcel.com/archives/2010/05/28/calendar-control-dll-on-windows-7-64-bit/

不是你的情况,但也许有帮助。 另请参阅MS的regsvr32页面

http://support.microsoft.com/kb/249873

我最近有类似的问题。 大约两天后下载新的mscomct2.ocx文件: http : //support.microsoft.com/kb/297381未注册的以前的一个,手动删除一个奇怪的MRU密钥与“mscomct2”在一个字段(只是在情况下),注册新的(使用Access ActiveX菜单)。 从此mscomct2.ocx的所有控件都只列出一次!

但不幸的是,这并没有删除错误信息。 但是,在连续两次导入到新容器后:original_file.mdb – > db1.mdb – > db2.mdb错误消息不会再出现(在db2.mdb文件中)。 但在original_file.mdb和db1.mdb之间的转换过程中仍然可见。

我与发送给另一个组的文件有同样的问题。 我有一个用户forms的dateselect器,除了这个组中的机器外,这个文件在Excel(2007和2010)中工作正常。 错误消息与原始发布中相同。

答案似乎如下,正如一个支持者所描述的那样:

事实certificateMSCOMCT2.OCX文件从用户的计算机中丢失。 此文件是Microsoft Windows公共控件-2 6.0(MSCOMCT2.OCX)。 看起来,这个控件提供了模型中与Date Picker一起工作的function。

修理他的电脑的过程如下:

  1. 将mscomct2.ocx文件复制到c:\ windows \ system32

  2. 通过在他的计算机上运行以下命令来注册ocx文件。 在命令提示符下键入regsvr32.exe c:\ windows \ system32 \ mscomct2.ocx,然后按Enter键。


这个指令可能是特定于组的计算机,但是把mscomct2.ocx作为罪魁祸首是一个开始。 我没有具体的build议在哪里得到这个文件,除了它似乎可以在互联网上。

尝试从这里删除启动插件(介意Office版本):

 C:\Program Files\Microsoft Office\OFFICE12\XLSTART\ 

只要取消注册MSCOMCTL.OCX然后注册它。

 **32-bit OS** C:\Windows\System32\MSCOMCTL.OCX **64-Bit OS** C:\Windows\SySWOW64\MSCOMCTL.OCX 

检查DatePicker ActiveX控件上的(Name)字段是否正在递增。 我有一个带有ComboBox的Excel工作表,其中名称每次打开时都会更改,在代码中引用的位置会引发相同的错误。

我参考了ComboBox1,但奇怪的是现在是ComboBox17。