2013-08-02 2 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.

Как это исправить, и что я могу сделать, чтобы новые пользователи имели необходимые ссылки?

EDIT: дополнительная информация. Проблема связана только с пользователями с машинами 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 $». –