2013-08-02 55 views
2

我有一个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

对于你的建议,我认为你可以使用以前的ActiveX版本。 – Makah

+0

但是,这如何帮助缺失参考问题? –

+0

什么都没有。那就是为什么它是评论而不是答案;-)。您可以将ActiveX更改为2.1,并尝试查看您的代码是否正常工作。我只是表明你可以避免这个检查/验证/提醒改变你的ActiveX版本。 – Makah

回答

0

后期绑定,而不是宣布对象为特定类型(如ADODB.Connection)声明他们作为对象,并使用

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参考。

+0

对不起乔西,也许我只是不太和你在同一水平。创建一个声明为ADODB的对象与我的代码将'Envirion $'标记为XP机器上缺少的引用有什么关系? –

+0

由于缺少ADO引用,它仅被标记为错误。如果你根本不需要*使用*引用,它就不会丢失,因此将删除该错误:-) – JosieP

+0

好吧,我想我现在就明白了。在这种情况下,我将如何去除ADO引用?代码是标记'Environ $'作为问题。 –