我正在将Access97 FE迁移到2003.过去一段时间我一直在编译97前端和2003前端(我的XP机器为97,Win7机器为2003)。就在最近(在上周?)..转换时我开始丢失我的MSCOMCTL.OCX引用。然而,奇怪的是它只发生在运行Office 2003(SP3)的Windows 7(32位)计算机上。如果我在另一台Win7 64位,Office 2003(SP3)机器上转换它,我不会丢失引用的文件。
我已经多次注册/取消注册C:\ windows \ system32 \ mscomctl.ocx(确保以管理员身份运行命令提示符)..然后重新启动。我已经在故障机器上卸载了Office 2003并重新加载它无济于事。我已经确定C:\ windows \ system32在路径中..(它是)
如果我在Win7 64位计算机上编译FE,并将其分发到此故障机器,它将无法正确启动应用程序(在底部获得初始化栏)。如果我在故障机器上重新引用该文件并重新创建MDE,它可以在32位版本和64位版本的Windows 7上运行(即使64位在C:\ windows \ syswow64中有mscomctl.ocx) ..
我的Win7 32bit设置有问题吗?我可以拿一个旧版本的FE(我在做更改时保留一个回购),这些似乎没有丢失参考。有问题的FE在我的Acc97机器和我的Win7 64位机器上编译得很好。我曾经在“现在”陷入困境的Win7 32bit机器上编译我所有的2003 FE?...
我也在MDB文件上多次运行反编译/修复/编译/压缩。
有人可以建议尝试一下吗?
的更新 的 好吧,我把“问题”工作站吹走了,并重装了Win7 Pro 64位,无论如何这将使WSUS的工作变得更容易。然而问题仍然存在......所以现在我不确定该怎么想。
答案 0 :(得分:2)
您应该确认您的Access应用程序使用的MSCOMCTL.OCX的版本与您可能在其上编译它的任何计算机上使用的版本相同。检查引用所使用的文件:
Function ListReferences() Dim a As Long Dim b As Long a = References.count For b = 1 To a Debug.Print b & ": " & References(b).Name & vbTab & vbTab & References(b).FullPath Next b End Function
这将为您提供Access FE中所有引用的文件名和路径列表。
使用Windows资源管理器找到Access引用的MSCOMCTL.OCX。右键单击该文件并记下版本。确认您在所有其他计算机上使用的MSCOMCTL.OCX是相同的版本。
答案 1 :(得分:1)
通过自动Windows更新,您的计算机上的MSCOMCTL.OCX
可能被更新的版本替换了吗?
在工作中,自动安装a certain update后,上周我们在某些机器上遇到了问题 引用上述链接的“此安全更新的已知问题”部分:
基于Windows公共控件的嵌入式ActiveX控件可能无法在预先存在的office文档中,第三方应用程序中以及在开发人员模式下插入新控件时加载。
显然我们不是唯一有问题的人:
After installing KB2687441 Access forms utilizing components from MSCOMCTL.ocx fail to open