Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не выполняется процедура вне окна VBA IDE - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не выполняется процедура вне окна VBA IDE (Макросы/Sub)
Не выполняется процедура вне окна VBA IDE
mail Дата: Среда, 11.08.2021, 09:26 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Доброе утро.

Столкнулся с довольно нестандартной проблемой выполнения процедуры запуска обновления всех запросов в рабочей книге при открытии. 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]
Код

Public Sub Workbook_Open()

    Application.CommandBars("Workbook Queries").Visible = True
    Application.CommandBars("Workbook Queries").Visible = False
    
End Sub
[/vba]

При открытии рабочей книги выполнение процедуры вызывает следующую ошибку:



Однако если открыть VBA IDE и выполнить эту процедуру оттуда, она отрабатывает. Попытки повесить процедуру на элемент управления в виде кнопки ничем не помогли, та же ошибка.

То есть получил странную ситуацию — код рабочий, должен решать проблему, но выполняется он только непосредственно из окна VBA. Была мысль, что открытие окна VBA тоже выполняет нужную инициализацию, пробовал процедуру, которая открывает и закрывает VBA IDE, но безуспешно, та же ошибка.

Пример рабочей книги не прилагаю, поскольку локально эту проблему не повторить, она проявляется только в определённой рабочей среде (удалённое подключение) и не связана с конкретной книгой.

Прошу вашей помощи. Возможно что-то не учитываю, нужно вызывать процедуру другим образом либо существуют способы инициализировать .NET Framework через VBA как-то иначе, без обращения к редактору запросов.


Сообщение отредактировал mail - Среда, 11.08.2021, 20:44
 
Ответить
СообщениеДоброе утро.

Столкнулся с довольно нестандартной проблемой выполнения процедуры запуска обновления всех запросов в рабочей книге при открытии. 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]
Код

Public Sub Workbook_Open()

    Application.CommandBars("Workbook Queries").Visible = True
    Application.CommandBars("Workbook Queries").Visible = False
    
End Sub
[/vba]

При открытии рабочей книги выполнение процедуры вызывает следующую ошибку:



Однако если открыть VBA IDE и выполнить эту процедуру оттуда, она отрабатывает. Попытки повесить процедуру на элемент управления в виде кнопки ничем не помогли, та же ошибка.

То есть получил странную ситуацию — код рабочий, должен решать проблему, но выполняется он только непосредственно из окна VBA. Была мысль, что открытие окна VBA тоже выполняет нужную инициализацию, пробовал процедуру, которая открывает и закрывает VBA IDE, но безуспешно, та же ошибка.

Пример рабочей книги не прилагаю, поскольку локально эту проблему не повторить, она проявляется только в определённой рабочей среде (удалённое подключение) и не связана с конкретной книгой.

Прошу вашей помощи. Возможно что-то не учитываю, нужно вызывать процедуру другим образом либо существуют способы инициализировать .NET Framework через VBA как-то иначе, без обращения к редактору запросов.

Автор - mail
Дата добавления - 11.08.2021 в 09:26
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не выполняется процедура вне окна VBA IDE (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования Jobsora jooble
© 2010-2021 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!