3

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

4

1 回答 1

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 将没有任何值。

于 2013-08-02T15:47:20.510 回答