Автоматически запускать подключения для передачи данных в XLSM

У меня есть файл XLSM, который содержит 2 соединения Web Query. Когда я перехожу к «Подключениям» на вкладке «Данные», я вижу два имеющихся у меня подключения.

Для каждого из них я могу редактировать некоторые свойства, одно из которых говорит «Обновлять каждые X минут». Я установил это на 1 минуту, а также отметил «Активировать фоновое обновление».

Однако это не сработает, так как соединения веб-запросов все равно не выполняются.

В конечном счете, мне нужно запускать эти соединения автоматически один раз в час. Желательно без взаимодействия с пользователем и без открытия документа.

Это возможно?


person Herter    schedule 03.11.2016    source источник
comment
Вы не можете обновить соединение, если файл не открыт. Вы можете запускать запросы при открытии файла или создать подпрограмму VBA, которая открывает файл, затем использует RefreshAll и сохраняет поверх исходного файла каждый час.   -  person user3819867    schedule 03.11.2016
comment
Вы имеете в виду как скрипт VBA, который можно запланировать в f.ex. Планировщик заданий Windows?   -  person Herter    schedule 03.11.2016
comment
Я имел в виду сценарий VBA как то, что вы можете написать в самом Excel, но вы также можете использовать VBS.   -  person user3819867    schedule 03.11.2016
comment
Я закончил тем, что сделал небольшой скрипт VBS для управления открытием, обновлением, закрытием. Затем оболочку пакетного сценария для обработки запуска сценария VBS и ведения журнала. Наконец, планировщик заданий Windows для периодического запуска пакетного сценария.   -  person Herter    schedule 03.11.2016
comment
Можете ли вы ответить на пост, чтобы я мог принять? - Вы меня на верном пути :)   -  person Herter    schedule 03.11.2016
comment
Речь идет не о получении баллов, не стесняйтесь написать свой собственный ответ, разъяснив, как вы туда попали, а затем вы можете принять свой ответ. В нынешнем виде эта тема никому не поможет.   -  person user3819867    schedule 09.11.2016
comment
Согласен, дело не в баллах :)   -  person Herter    schedule 10.11.2016


Ответы (1)


Вы не можете обновить соединение, если файл не открыт. Вы можете запускать запросы при открытии файла или создать подпрограмму VBA, которая открывает файл, затем использует RefreshAll и сохраняет поверх исходного файла каждый час.
Вы также можете использовать VBS.
Окончательное решение от OP:

Я закончил тем, что сделал небольшой скрипт VBS для управления открытием, обновлением, закрытием. Затем оболочку пакетного сценария для обработки запуска сценария VBS и ведения журнала. Наконец, планировщик заданий Windows для периодического запуска пакетного сценария.

person user3819867    schedule 09.11.2016
comment
Чтобы уточнить это: я настроил задачу в планировщике задач Windows, которая запускается один раз в час. Задача выполняет пакетный сценарий, в котором регистрируются сообщения о начале и завершении, а также выходные данные сценария VBS. Сценарий VBS обрабатывает все, что связано с файлом XLSM, т. е. открытие, обновление подключений к данным, закрытие. Весь процесс занимает менее 1 сек, в т.ч. выполняется 2 веб-запроса. Этот подход, кажется, работает так, как предполагалось, и я буду его использовать. - person Herter; 10.11.2016