ADODB.Connection не определено - PullRequest
       18

ADODB.Connection не определено

0 голосов
/ 19 ноября 2009

Ссылка Excel VBA на SQL Server без служб SSIS

После того, как я начал работать над этим, я скопировал все глобальные переменные / константы из подпрограммы, которая включала

    Const CS As String = "Driver={SQL Server};" _
                       & "Server=****;" _
                       & "Database=****;" _
                       & "UID=****;" _
                       & "PWD=****"
    Dim DB_Conn As ADODB.Connection
    Dim Command As ADODB.Command
    Dim DB_Status As String
в аналогичный модуль в другой электронной таблице. Я также скопировал в тот же модуль
Sub Connect_To_Lockbox()
    If DB_Status <> "Open" Then
        Set DB_Conn = New Connection
        DB_Conn.ConnectionString = CS
        DB_Conn.Open  ' problem!
        DB_Status = "Open"
    End If
End Sub
Я добавил ту же ссылку (ADO 2.8)

Первая электронная таблица все еще работает; появляется секунда в DB_Conn.Open «Ошибка времени выполнения -214767259 (80004005)»: [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию " Удаление ссылок на обоих, сохранение файлов, повторное открытие, повторное добавление ссылок не помогает. Один все еще работает, а другой получает ошибку.

?!

Ответы [ 4 ]

1 голос
/ 21 марта 2016

Я заметил то же сообщение об ошибке, и в моем случае ничего не изменилось. Я задавался вопросом, нужно ли переустанавливать драйвер odbc (основываясь на том, что я читал в Интернете) В любом случае перезапуск Excel сделал свое дело. Иногда решение намного проще. : -)

0 голосов
/ 19 ноября 2009

Проблема: Ваша константа не найдена компилятором.

Решение: Поскольку константа находится в отдельном модуле, вам нужно установить ее как Public, чтобы другой код мог ее видеть.

Доказательство:
Чтобы доказать эту теорию, вы можете сделать следующее: Откройте новую таблицу Excel Зайдите в VBA дизайнер и добавьте новый модуль В этот модуль положено:

Const TestString As String = "Test String"

Затем добавьте следующий код в ThisWorkbook:

Public Sub TestString()
   MsgBox (TestString)
End Sub

После добавления вернитесь в рабочую книгу и добавьте кнопку, выбрав «TestString» в качестве макроса для запуска при нажатии.

Нажмите кнопку, и появится пустое окно сообщения. Вернитесь к конструктору VBA и измените const в Module1 на Public Нажмите кнопку в электронной таблице, и вы должны увидеть «Test String» в окне сообщения.

0 голосов
/ 27 ноября 2012

Я понимаю, что этот вопрос действительно старый. Но для записи я хочу документировать свои решения для ошибки здесь: это была ошибка, связанная с данными в электронной таблице! Столбец был отформатирован как дата и содержал значение 3000000. Изменение формата на числа решило ошибку 80004005.

0 голосов
/ 19 ноября 2009

Когда всплывает ошибка, проверьте ваши «локальные» окна, чтобы увидеть, что держит CS. Вид> Окно местных жителей

...