2015-12-07 3 views
0

У меня есть этот код, который работает на одной электронной таблице, но не на другой. Я просто пытаюсь автоматизировать передачу диапазона данных первенствовать в таблице доступа, например, такMS Access не может найти мой диапазон excel при импорте

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "UsysFastTrack", strFilePath, False, strRange 

strFilePath и strRange являются просто строки, содержащие полный путь к файлам (включая имя рабочего листа и расширение) и имя диапазона excel на листе, соответственно. Эта строка вызывает ошибку

The Microsoft Access database engine could not find the object ...

Эта ошибка появляется много в Интернете, и где-то я видел совет попробовать мастер импорта, чтобы увидеть, что я и вот, право, как я попал в последний Next

enter image description here

Это точно такая же ошибка, и это останавливает меня на моих следах. Что забавно, так это то, что вы можете видеть, что диапазон существует в электронной таблице на ваших глазах.

Что здесь происходит?

ответ

2

Похоже, что названия ваших названных диапазонов недействительны, они похожи на обычные диапазоны. Попробуйте изменить имена

+0

Что такое название диапазона? –

+0

Формально ваши имена действительны - они начинаются с буквы, не имеют специальных символов, но, вероятно, у Access driver есть проблема с именованным диапазоном и распознаванием диапазона. Попробуйте переименовать свой диапазон в нечто вроде «range432432», оно должно работать. По крайней мере, когда я пытался, это сработало, но имена вроде «f76465» не работали –

+0

Brilliant. Огромное спасибо. Я предполагаю, что название диапазона выглядит слишком похоже на ссылку на ячейку, хотя число за F больше, чем максимальное число строк в excel. Интересно, что excel позволяет использовать диапазоны так, как это, но, по-видимому, доступ к ним при попытке найти диапазон. Еще раз спасибо. –