Столкнулся с довольно нестандартной проблемой выполнения процедуры запуска обновления всех запросов в рабочей книге при открытии. Excel 2016 запускается с удалённого сервера Citrix для работы с надстройкой SAP Analysis Office, при помощи которой в рабочей книге обновляются определённые данные и выгружаются на лист. Далее необходимо создать из них запрос в Power Query, обработать и загрузить в модель данных для построения сводных отчётов, однако при нажатии "Обновить всё" Excel выдаёт модальное окно с ошибкой "microsoft.mashup.oledb.1 provider is not registered on the local machine".
По результатам чтения ответов официальной техподдержки Microsoft пришёл к выводу, что ошибка возникает из-за того, что при загрузке Excel не выполняется инициализация .NET Framework, который необходим для функционирования редактора запросов. Если инициализацию выполнить вручную (например открыть окно редактора запросов или просто нажать кнопку "Показать панель запросов"), то все дальнейшие обновления проходят безо всяких проблем вплоть до закрытия Excel.
Для решения попытался написать простейшую процедуру VBA, срабатывающую при открытии рабочей книги, которая будет открывать и закрывать панель запросов.
При открытии рабочей книги выполнение процедуры вызывает следующую ошибку:
Однако если открыть VBA IDE и выполнить эту процедуру оттуда, она отрабатывает. Попытки повесить процедуру на элемент управления в виде кнопки ничем не помогли, та же ошибка.
То есть получил странную ситуацию — код рабочий, должен решать проблему, но выполняется он только непосредственно из окна VBA. Была мысль, что открытие окна VBA тоже выполняет нужную инициализацию, пробовал процедуру, которая открывает и закрывает VBA IDE, но безуспешно, та же ошибка.
Пример рабочей книги не прилагаю, поскольку локально эту проблему не повторить, она проявляется только в определённой рабочей среде (удалённое подключение) и не связана с конкретной книгой.
Прошу вашей помощи. Возможно что-то не учитываю, нужно вызывать процедуру другим образом либо существуют способы инициализировать .NET Framework через VBA как-то иначе, без обращения к редактору запросов.
Доброе утро.
Столкнулся с довольно нестандартной проблемой выполнения процедуры запуска обновления всех запросов в рабочей книге при открытии. Excel 2016 запускается с удалённого сервера Citrix для работы с надстройкой SAP Analysis Office, при помощи которой в рабочей книге обновляются определённые данные и выгружаются на лист. Далее необходимо создать из них запрос в Power Query, обработать и загрузить в модель данных для построения сводных отчётов, однако при нажатии "Обновить всё" Excel выдаёт модальное окно с ошибкой "microsoft.mashup.oledb.1 provider is not registered on the local machine".
По результатам чтения ответов официальной техподдержки Microsoft пришёл к выводу, что ошибка возникает из-за того, что при загрузке Excel не выполняется инициализация .NET Framework, который необходим для функционирования редактора запросов. Если инициализацию выполнить вручную (например открыть окно редактора запросов или просто нажать кнопку "Показать панель запросов"), то все дальнейшие обновления проходят безо всяких проблем вплоть до закрытия Excel.
Для решения попытался написать простейшую процедуру VBA, срабатывающую при открытии рабочей книги, которая будет открывать и закрывать панель запросов.
При открытии рабочей книги выполнение процедуры вызывает следующую ошибку:
Однако если открыть VBA IDE и выполнить эту процедуру оттуда, она отрабатывает. Попытки повесить процедуру на элемент управления в виде кнопки ничем не помогли, та же ошибка.
То есть получил странную ситуацию — код рабочий, должен решать проблему, но выполняется он только непосредственно из окна VBA. Была мысль, что открытие окна VBA тоже выполняет нужную инициализацию, пробовал процедуру, которая открывает и закрывает VBA IDE, но безуспешно, та же ошибка.
Пример рабочей книги не прилагаю, поскольку локально эту проблему не повторить, она проявляется только в определённой рабочей среде (удалённое подключение) и не связана с конкретной книгой.
Прошу вашей помощи. Возможно что-то не учитываю, нужно вызывать процедуру другим образом либо существуют способы инициализировать .NET Framework через VBA как-то иначе, без обращения к редактору запросов.mail
Сообщение отредактировал mail - Среда, 11.08.2021, 20:44