&引用;对象库无效或包含引用…”;在Excel VBA中使用日期选择器
我已经在一个Excel工作簿上工作了一段时间,其中有很多VBA代码,现在我已经将此文件发送给一些同事进行测试,但它在他们的计算机中不起作用。 我们都在同一家公司工作,在Office 2003中安装了Windows XP SP2 工作簿有一个窗体,单击形状时会打开,其中包含一些控件。 当他们单击窗体的形状以显示以下错误时: “对象库无效或包含 对对象定义的引用 找不到“ 表单中有一个日期选择器,我认为问题就在这里。如果我从表单中删除日期选择器并再次向他们发送文件,他们不会收到此错误消息 我已经尝试过删除这两个站点“”和“”中提到的mscomct2.exd文件,但仍然会出现错误。我检查并生成了新的.exd文件 其他一些信息:&引用;对象库无效或包含引用…”;在Excel VBA中使用日期选择器,vba,excel,activex,registry,Vba,Excel,Activex,Registry,我已经在一个Excel工作簿上工作了一段时间,其中有很多VBA代码,现在我已经将此文件发送给一些同事进行测试,但它在他们的计算机中不起作用。 我们都在同一家公司工作,在Office 2003中安装了Windows XP SP2 工作簿有一个窗体,单击形状时会打开,其中包含一些控件。 当他们单击窗体的形状以显示以下错误时: “对象库无效或包含 对对象定义的引用 找不到“ 表单中有一个日期选择器,我认为问题就在这里。如果我从表单中删除日期选择器并再次向他们发送文件,他们不会收到此错误消息 我已经尝试
regsvr32 mscomct2.ocx
我认为这将把ocx放在工具参考框中,并希望能够修复它。这里有一个在Windows7上安装ocx的链接
不是你的情况,但可能有帮助。另外,请参见MS关于regsvr32的页面
我有这个问题。我不记得原因是什么,但是在你的userform中有日期/时间选择器,把它放在userform\u initialize中。如果没有正确的引用,代码只会添加一个文本框。我知道这不是最好的解决办法,但这是一个变通办法。由于系统管理员的原因,我无法在任何机器上运行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
Dim dtP作为对象
Dim HasdPicker作为布尔值
出错时继续下一步
Set dtP=frmSearch.Frame24.Controls.Add(“MSComCtl2.DTPicker”,“DTPicker1”,True)
如果错误号0或dtP为空,则
hasDtPicker=False
'将“frmsearch.Frame24”更改为您希望日期和时间选择器所在的区域。
Set dtP=frmSearch.Frame24.Controls.Add(“Forms.TextBox.1”,“DTPicker1”,True)
dtP.Text=[todays\u date].Value
其他的
hasDtPicker=True
如果结束
'
'文本框和DTPicker的格式化属性
'
使用dtP
.宽度=67.5
.身高=18
.Left=lblNextActionDate.Left
.Top=lblNextActionDate.Top+lblNextActionDate.height+5
以
我也有同样的问题。删除所有.exd文件使我的程序工作
进入命令提示符并键入以下DOS命令:
代码:
CD\文档和设置
DEL/S/A:H/A:-H*.EXD
我最近也有类似的问题。大约两天后,下载了新的mscomct2.ocx文件: 取消注册以前的一个,手动删除其中一个字段中带有“mscomct2”的奇怪MRU密钥(仅供参考),注册新密钥(使用Access ActiveX菜单)。 从那时起,mscomct2.ocx中的所有控件只列出一次 但不幸的是,这并没有删除错误消息。但是,在连续两次导入到新容器后: 原始_file.mdb-->db1.mdb-->db2.mdb
错误消息不再出现(在db2.mdb文件中)。但在原始文件.mdb和db1.mdb之间的传输过程中,它们仍然可见。我发送到另一个组的文件也有同样的问题。我在用户表单中有一个日期选择器,该文件与Excel(2007和2010)配合良好,但这一组中的机器除外。错误消息与原始发布中的消息相同 答案似乎是这样的,正如一位调查此事的支持人员所描述的: 结果是用户的计算机上缺少MSCOMCT2.OCX文件。此文件是Microsoft Windows Common Controls-2 6.0(MSCOMCT2.OCX)。该控件似乎在模型中提供了使用日期选择器的功能 修复他的计算机的过程如下:
此指令可能特定于组的计算机,但
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
C:\Program Files\Microsoft Office\OFFICE12\XLSTART\
**32-bit OS** C:\Windows\System32\MSCOMCTL.OCX
**64-Bit OS** C:\Windows\SySWOW64\MSCOMCTL.OCX