У меня есть электронная таблица, которую я хочу загрузить в интранет моей компании, чтобы другие могли ее просмотреть. Каждый раз, когда электронная таблица открывается, она запускает фоновый скрипт, который обновляет информацию. Проблема в том, что скрипт выполняется около 10 минут, потому что он смотрит на 2 огромных таблицы.
Есть ли способ обновлять таблицу один раз в день (пример 2 часа ночи), не открывая ее?

2 ответа2

0

Простой ответ: нет. Макрос VBA запускается на движке Microsoft Excel, то есть для запуска макроса Excel должен быть открыт.

Однако VBScript - это тот же язык, что и VBA, за исключением того, что VBA может напрямую связываться с файлом Microsoft Excel и получать доступ к ячейкам с помощью таких команд, как sheet(1) .cells(1,3), а VBScript - нет. Приложив много работы, вы можете создать vbscript, который читает и создает файлы .csv, что в перспективе может дать вам идею замены.

Если это действительно не вариант (и, честно говоря, я не виню вас), вы можете отключить скрипт для загрузки каждый раз, когда кто-то открывает его, и вместо этого сделать его ручным заданием, чтобы по крайней мере передать контроль когда вам. Если на компьютере, работающем ночью, работает Microsoft Excel (может быть даже сервер), вы можете создать скрипт Auto-hotkey или, возможно, другой скрипт VBA, который будет запускать этот макрос и использовать запланированное задание для запуска Excel и открытия книги. , Обратите внимание, что запланированное задание само по себе не может запустить макрос, поэтому вам нужно упростить способ автоматического запуска макроса. Например, у вас есть workbook2.xls, в котором есть макрос, который автоматически открывает workbook1.xls, а затем запускает его расчетный макрос, а в конце сохраняет workbook1.xls, а затем закрывает оба файла.

0

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

Итак, когда лист Excel открывается пользователем, добавьте следующее в существующий код

Public Sub ExecuteBigMacro()
    timeForAlert = Now + TimeValue("24:00:00")
    Application.OnTime timeForAlert, "ExecuteBigMacro"
    'the rest of your code which takes ages! 
End Sub

Это означает, что сначала открыть его в 2 часа ночи (и каждый раз после перезапуска приложения)! Хотя в зависимости от ситуации вы можете обновлять его каждые 4 часа и просто принимать в течение этого времени, для пользователя будет задержка !!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .