我有一个Excel应用程序,当用户单击一个按钮时,下面一行代码将触发,将具有新名称的整个Excel工作簿复制到新文件夹位置:
' Save a copy of workbook to Archive folder
ActiveWorkbook.SaveCopyAs (CreateObject("WScript.Shell").specialfolders("Desktop") & "\Inspections\Archive\FeedSampleReport-" & Environ$("Username") & "-" & Strings.Format(Now(), "mmddyyyy") & ".xlsm")
在我的系统上,一切正常,但Environ$
标有Compile error: Can't find project or library
。当我检查两台机器的引用时,我发现它们有一个标记为MISSING: Microsoft ActiveX Data Object 6.1 Library
。
如何解决此问题,以及如何确保新用户拥有必要的参考资料?
编辑:更多信息。该问题仅适用于使用Windows XP计算机的用户。我的开发机器运行的是Windows7,而那些也使用Windows7的最终用户也没有这个问题。
答案 0 :(得分:0)
到后期绑定,而不是将对象声明为特定类型(如ADODB.Connection),将它们声明为Object并使用
Dim cn as Object
Set cn = CreateObject("ADODB.Connection")
而不是
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
实例化它们。你还必须从引用的库中声明你使用的任何常量(或者用文字值替换它们),例如你可以添加
Const adOpenStatic As Long = 3
Const adCmdText As Long = 1
Const adLockReadOnly As Long = 1
因为没有对ADO设置的引用,那些对VBA没有值。