Как запустить VBA код каждый день, скажем, в 6:30 вечера - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу запустить код VBA в указанное время, скажем, в 18:30. каждый день. Я пробовал планировщик с командным файлом, но он не работал из-за проблемы с привилегиями. Я хочу использовать функцию времени для этого в доступе. Я закончил с частью Outlook для отправки почты, но проблема в том, чтобы запускаться каждый день в указанное время.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Просто используйте планировщик заданий Windows. Даже если у вас есть пакетный файл, который вам не нужен для такого рода вещей, вы все равно запустите его с помощью WTS.

  1. Нажмите клавиши Windows + R, чтобы открыть диалоговое окно «Выполнить», введите taskschd.msc и нажмите Enter. ПРИМЕЧАНИЕ. Откроется планировщик заданий. Этот файл находится по адресу: C: \ Windows \ system32 \ taskschd.msc

  2. Выбрав библиотеку планировщика заданий на левой панели, щелкните / нажмите «Создать задание» в крайнем правом окне. (см. скриншот ниже)

  3. На вкладке Общие введите «Имя» программы, для которой вы хотите создать этот ярлык. (см. скриншот ниже) ПРИМЕЧАНИЕ. Это будет название задачи. В качестве примера я буду использовать CCleaner для этой программы. Запишите это имя, оно понадобится вам позже в шагах 12 и 14 ниже.

  4. Установите флажок Запускать с наивысшими привилегиями. (См. Скриншот ниже)

  5. Нажмите / коснитесь раскрывающегося списка «Настроить для», чтобы открыть его, и выберите Windows® 7, Windows Server ™ 2008 R2 или Windows, в которой вы находитесь (см. Скриншот выше и ниже). ПРИМЕЧАНИЕ. Это похоже на режим совместимости. Если программа не поддерживает работу в Windows 7 в обычном режиме, вы можете выбрать ОС, которая поддерживает запуск, вместо этого, чтобы она работала в режиме совместимости, как если бы она работала в этой ОС вместо Windows 7.

    Ярлык программы с повышенными правами без запроса UAC - Create-drop_down_box.jpg

  6. Нажмите / коснитесь на вкладке Действия, затем нажмите кнопку Создать. (см. скриншот ниже)

  7. В поле Программа / скрипт: на вкладке Действия скопируйте и вставьте путь ниже. (см. скриншот ниже, шаг 9) ПРИМЕЧАНИЕ. Благодарим chillz за обновленные шаги 7 и 8.

    % WINDIR% \ system32 \ cmd.exe

  8. В поле Добавить аргументы (необязательно): на вкладке Действия введите аргумент ниже. (см. скриншот ниже шага 9)

ПРИМЕЧАНИЕ. Замените Имя задачи в приведенном ниже аргументе именем, введенным на шаге 3 (например, CCleaner) в кавычках, и замените Полный путь к программе в приведенном ниже аргументе фактическим полным путем к файлу .exe программы в цитаты. c начать «Имя задачи» «Полный путь к программе» Например: Код: c запустить "CCleaner" "C: \ Program Files \ CCleaner \ CCleaner64.exe"

  1. Нажмите / нажмите на ОК. (см. скриншот ниже)

  2. Нажмите / коснитесь вкладки Условия и снимите флажок Стоп, если компьютер сначала переключается на аккумуляторную батарею, затем снимите флажок Запускать задачу, только если компьютер подключен к блоку питания переменного тока. (см. скриншоты ниже) ПРИМЕЧАНИЕ. Этот шаг в основном предназначен для ноутбуков, поэтому вы сможете запускать программу, когда ноутбук работает от батареи.

  3. Нажмите / нажмите на ОК. (См. Скриншоты выше)

  4. Теперь вы увидите новое задание, созданное с именем (например, CCleaner), которое вы дали на шаге 3. Закройте планировщик заданий. (см. скриншот ниже)

  5. Щелкните правой кнопкой мыши или нажмите и удерживайте пустую область рабочего стола, затем нажмите / нажмите «Создать и ярлык».

  6. Введите цель ниже для поля местоположения, затем нажмите / нажмите на кнопку Далее. (см. скриншот ниже) ПРИМЕЧАНИЕ. Подставьте имя задачи в цель с именем (например, CCleaner) в кавычках, которые вы использовали в шаге 3.

    schtasks / run / tn "имя-задачи"

    Например: для моего имени задачи CCleaner, которое я использовал на шаге 3, я набрал бы: schtasks / run / tn "CCleaner"

  7. Введите имя, которое вы хотите для ярлыка (например, CCleaner), затем нажмите / нажмите на кнопку Готово. (см. скриншот ниже)

  8. Щелкните правой кнопкой мыши новый ярлык (например, CCleaner) на рабочем столе, затем щелкните / нажмите «Свойства».

  9. Нажмите / коснитесь вкладки «Ярлыки» и кнопки «Изменить значок». (см. скриншот ниже)

  10. Нажмите / нажмите на ОК. (см. скриншот ниже)

  11. Нажмите / нажмите на кнопку Обзор. (см. скриншот ниже)

  12. Перейдите к файлу .exe программы, с которой вы создали этот ярлык, выберите его и нажмите / коснитесь элемента Открыть. (см. скриншот ниже) ПРИМЕЧАНИЕ. Если у вас есть собственный значок, который вы предпочитаете использовать вместо этого, перейдите туда, где он был сохранен.

  13. Выберите значок, который вы хотите для ярлыка, затем нажмите / нажмите на ОК. (см. скриншот ниже)

  14. Нажмите / нажмите на ОК. (см. скриншот ниже)

  15. Теперь вы можете использовать этот повышенный ярлык для запуска при запуске в папке «Автозагрузка», запуска при запуске в качестве задачи, «Прикрепить к меню Пуск», «Прикрепить к панели задач», назначить сочетание клавиш или переместиться туда, куда вы нравится для легкого использования.

  16. Когда вы запускаете этот новый ярлык с повышенными правами, вам больше не нужно нажимать / нажимать YES, чтобы подтвердить запрос UAC и разрешить запуск программы от имени администратора.

https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

Наконец, посмотрите на это.

https://support.office.com/en-us/article/create-a-macro-that-runs-when-you-open-a-database-98ba1508-dcc6-4e0f-9698-a4755e548124

0 голосов
/ 05 сентября 2018

Вот как вы это делаете:

  • Установите свой код VBA как функцию (не подчиненную).
  • Создайте макрос, который запускает эту функцию и затем закрывает базу данных.
  • Создайте командный файл командной строки, который запускает ваш файл MS Access с переключатель / x (см. пример ниже).
  • Установите пакетный файл как запланированное задание на вашем сервере или любом другом компьютер, на котором вы хотите запустить этот код VBA. Если не сервер, убедитесь, что он остается включенным, и на сетевой карте нет энергосбережения, нет режима сна / ожидания. Убедитесь, что у пользователя запланированной задачи есть все необходимые привилегии.

Вы можете настроить запланированное задание для запуска с правами администратора. Как правило, если пользователь, настроенный в качестве пользователя для задачи, может запустить ее, то запланированная задача также будет выполняться. Это не должен быть пользователь, создающий запланированное задание. При необходимости создайте учетную запись пользователя с необходимыми разрешениями и используйте ее.

Пример пакетного файла:

"C:\Program Files\Microsoft Office\Office16\MSACCESS.EXE" "C:\Databases\MyDatabase.accdb" /x Daily
EXIT

Это запустит Access 2016, 64-битный, откроет файл MyDatabase.accdb и запустит макрос с именем «Daily».

В качестве дополнения: можно выполнять запланированные задачи и использовать Outlook в качестве отправителя. Но если вам не нужно использовать Outlook в качестве отправителя, вы можете немного упростить свою жизнь и использовать Swithmail.

Если вам абсолютно необходимо использовать Outlook, проверьте это: https://support.microsoft.com/en-us/help/3189806/a-program-is-trying-to-send-an-e-mail-message-on-your-behalf-warning-i

...