在Excel 2003 VBA项目中,我使用的是MSCOMCTL.OCX中的控件。这是VBA项目引用System32 \ MSCOMCTL.OCX。
当我在64位Windows 7系统上的Excel 2003中打开该项目时,Excel会自动更改对SysWOW64 \ MSCOMCTL.OCX(这是正确的位置)的引用。
但是,当我将该项目发送给使用32位Windows XP的客户端时,该项目在打开时会抱怨,因为他的系统上不存在SysWOW64 \ MSCOMCTL.OCX。
到目前为止,我提出了(不满意的)解决方案:
指示客户端手动将引用更改回系统上的正确位置(System32 \ MSCOMCTL.OCX)。
方法1.和2.没有真正解决任何问题,解决方案3是很多工作。
非常感谢任何想法。
答案 0 :(得分:1)
如果在工作簿关闭时自动关闭参考,该怎么办?这样,当打开工作簿时,引用不会被“破坏”,并且您的所有控制仍然应该是好的。
即。 :
Private Sub Workbook_Open()
'use environ variable for folder locs
If os = "64bit" Then
Me.VBProject.References.AddFromFile ("C:\WINDOWS\SysWOW64\MSCOMCTL.OCX")
Else
Me.VBProject.References.AddFromFile ("C:\WINDOWS\system32\MSCOMCTL.OCX")
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each ref In Me.VBProject.References
If ref.Name = "MSComctlLib" Then
Me.VBProject.References.Remove ref
End If
Next ref
End Sub
我使用ADODB dll进行了快速测试,它似乎有效,但我不确定你是如何专门使用该DLL的;但是,如果有效,请告诉我!肯定比选项3好很多!