Нет разрешения на чтение «MSysObjects» (номер ошибки: -2147217911) при использовании Microsoft Excel VBA для запроса доступа только к файлам accdb — mdb работает нормально
Использование Microsoft Excel VBA для запроса доступа.
С файлом mdb эта строка подключения отлично открывает файл mdb, и строка SQL возвращает нужные мне таблицы.
Connection String: Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "C:\My Files\Word\ADA II Text\Chapters\9 -
8\Access\ADAIICH9TEST.mdb";User Id=admin;Password=;
SQL String: SELECT MSysObjects.Name From MSysObjects WHERE MSysObjects.Name Not Like "MSyS*" And Type=1 AND
Flags=0 ORDER BY MSysObjects.Name;
С файлом accdb эта строка подключения отлично открывает файл accdb, но SQL выдает следующую ошибку:
№ ошибки: -2147217911 Описание ошибки: запись(и) не может быть прочитана; нет разрешения на чтение «MSysObjects».
Почему он имеет доступ к MSysObjects при чтении файла mdb, но не имеет доступа к файлу accdb? Как предоставить доступ программно или из файла доступа?
Я уже пытался выполнить следующие операторы перед запуском SQL:
'cn.Execute "GRANT SELECT ON MSysObjects TO Admin;"
'cn.Execute "GRANT SELECT ON TABLE MSysObjects TO PUBLIC;"
Они выдают ошибку: Номер ошибки: -2147467259 Описание ошибки: не удается открыть информацию о рабочей группе ядра базы данных Microsoft Access.
файл.


В Access вам нужно дать разрешение пользователю по умолчанию на доступ к таблице.
В ближайшем окне с доступом выполните
CurrentProject.Connection.Execute "GRANT SELECT ON MSysObjects TO Admin;"
И ваш SQL будет работать после этого.
Возможно, вы захотите изменить строку подключения. IIRC Jet не будет работать после Access 2003, поэтому попробуйте
Provider=Microsoft.ACE.OLEDB.12.0;Data Source = "C:\...ADAIICH9TEST.accdb;
СПАСИБО. Я запускал SQL в Excel для доступа, а не в доступе. Это была моя проблема. Вы сэкономили мне много времени.