#sql #vba #excel-2007
#sql #vba #excel-2007
Вопрос:
Я получаю следующую ошибку при вводе значений для моего SQL из определенных ячеек. Однако, когда я жестко кодирую значения в коде, он работает нормально. итак, это явно как-то связано с синтаксисом того, как я это написал.
Я хочу сделать это динамичным по нескольким причинам и надеюсь, что кто-нибудь сможет мне помочь.
Ошибка: ядро базы данных Microsoft Access не смогло найти объект «objectname»
Рабочий код, в котором значения жестко закодированы:
mySQL = "SELECT * FROM [listname];"
With cnt
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {0C3G7BTF-000E-4C16-8E07-E4B7F525069F};"
.Open
End With
Код, который не работает:
mySQL = "SELECT * FROM ['" amp; Sheet3.Range("c1") amp; "'];"
With cnt
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {'" amp; Sheet3.Range("d1") amp; "'};"
.Open
End With
Ответ №1:
Я бы посоветовал поместить значение строки вашего подключения в переменную и распечатать его (например, debug.print myConnectionString), чтобы выполнить сравнение символов для каждого символа.
Кроме того, у вас есть одинарные кавычки, окружающие вашу ссылку на sheet.range(«d1»)
"Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {'" amp; Sheet3.Range("d1") amp; "'};"
Возможно, это причина вашей проблемы. Похоже, у вас та же проблема с назначением переменной MySQL.
Редактировать :
Возможно, это могло бы сработать :
mySQL = "SELECT * FROM [" amp; Sheet3.Range("c1") amp; "];"
myConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://sharepoint.com/sites1/xx/;LIST= {" amp; Sheet3.Range("d1") amp; "};"
debug.print myConnectionString
'Open execution window (ctrl g) to get the value of myConnectionString
With cnt
.ConnectionString = myConnectionString
.Open
End With
Комментарии:
1. Удаление одинарных кавычек создает ожидаемую ошибку: end of statement
2. Не могли бы вы попробовать сохранить строку подключения в переменной (вместо того, чтобы напрямую назначать ее вашему объекту подключения), распечатать ее в окне выполнения и показать результат, чтобы мы могли сравнить его?
3. Кроме того, я думаю, что вы удалили двойную кавычку, а не одинарную кавычку.
4. Ранее я пытался присвоить строковой переменной, и мне повезло так же. не могли бы вы, пожалуйста, дать мне код для части, которую вы упоминаете об удалении кавычек? Возможно, я неверно истолковываю это по-другому и не работает, какую бы цитату я ни удалял. Кроме того, я не совсем уверен, как выполнить упомянутую вами функцию debug.print: p
5. Я попробовал это и получил ту же ошибку — ;LIST= { » amp; Sheet3.Range(«d1″) amp; » };»