修复缺少参考?

时间:2013-08-02 14:09:52

标签: excel vba excel-vba excel-2007 ms-office

我有一个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的最终用户也没有这个问题。

1 个答案:

答案 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没有值。