2013-08-02 91 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 $'作爲問題。 –