VBA: механизм базы данных доступа к Microsoft не смог найти объект (таблица рабочих таблиц SQL)

Я получаю следующее сообщение об ошибке в строке rs.Open strSQL, cn , при попытке выполнить инструкцию SQL select в таблице таблицы в электронной таблице Excel:

Механизм базы данных Microsoft Access не смог найти объект «Sheet1 $ A1: NC3». Убедитесь, что объект существует, и вы правильно назовете его имя и имя пути. Если «Sheet1 $ A1: NC3» не является локальным объектом, проверьте сетевое подключение или обратитесь к администратору сервера

Я воспользовался различными советами по боковым панелям Stack Overflow для подобных вопросов, и пусть у Google есть пробег, но я все еще не решил это.

  1. Объект локальный – проверка

  2. Рабочая книга – текущая открытая книга, которая сохраняется на рабочем столе -check

  3. Сетевое подключение – проверка

наблюдения

  1. Помещение строки SQL как "Select * from [Sheet1$];" работает отлично.

  2. Расширьте это, добавив ссылку на диапазон, и ошибка вернется, т.е. "Select * from [Sheet1$A1:NC3];" не работает.

  3. Как отмечено в комментариях, до столбца IV, т [Sheet1$A1:IV3] в порядке; столбец IW и сообщение об ошибке.

Примечание . Debug.Print подтверждает

  1. ListObjects("Table1").Range.Address как $A$1:$NC$3

  2. rngAddress[Sheet1$A1:NC3];

Кто-нибудь может заметить, что я сделал неправильно? Или предложите обходной путь, чтобы я мог использовать этот диапазон (и предпочтительно не выбирать весь лист)

Вот полный код:

 Option Explicit Public Sub TestSQL() 'Tools > references > Microsoft ActiveX Object Library Dim wb As Workbook Dim wsSource As Worksheet Dim strFile As String Dim strCon As String Dim strSQL As String Set wb = ThisWorkbook Set wsSource = wb.Worksheets("Sheet1") Dim cn As ADODB.Connection Dim rs As ADODB.Recordset strFile = ThisWorkbook.FullName strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _ & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Open strCon Dim rngAddress As String rngAddress = "[" & wsSource.Name & "$" & Replace(wsSource.ListObjects("Table1").Range.Address, "$", "") & "];" strSQL = "SELECT * FROM " & rngAddress rs.Open strSQL, cn End Sub 

Окружающая среда: Windows 8, Excel 2016 64 бит.

Interesting Posts

Экспорт SSRS в Excel имеет неправильные нижние колонтитулы группы

SQL-запросы к листам Excel – не могут передать первый запрос

используя vba в excel для определения минимального значения из массива именованных диапазонов

Excel У меня есть несколько строк, начинающихся с «Name» sepcific для каждой строки. Как заменить отдельные ячейки строк именами этой строки?

Как объединить ячейку в столбце, если ячейка над ней имеет контент, но сама пуста

Идентификатор обработчика процесса / оконного дескриптора в Excel VBA

суб-декларация visual Basic

Текст VBA для столбца с круглыми скобками в качестве разделителя

MIME-типы и экспорт в различные приложения (excel, word, pdf … и т. Д. И т. Д.),

DataGridView, показывающий дополнительные цифры после импорта листа excel в приложении Windows

Получить данные из скопированных фильтрованных ячеек

Php превосходит в одной ячейке

Как сохранить как PDF через VBA

Макрос не выбирает диапазон для изменения комментариев в Excel

Связывать данные файла Excel с TFS

Давайте будем гением компьютера.