Как видите, все указанные ниже расписания вызовов макросов связаны друг с другом. Однако я хотел бы запускать первый макрос Sub Button1_Click() каждые 5 дней. В настоящее время application.Ontime не увеличивается после 23 часов. Может кто-нибудь посоветовать, как настроить первый макрос Sub Button1_Click() (поэтому остальные макросы связаны с Button1, они будут запускаться автоматически) для автоматического запуска через каждые 5 дней.
Sub Button1_Click()
Application.OnTime Now + TimeValue("00:00:10"), "Part1"
End Sub
Sub Part1()
Call DeleteFiles
Application.OnTime Now + TimeValue("00:00:20"), "Part2"
End Sub
Sub Part2()
Call CopyFiles_r2
Application.OnTime Now + TimeValue("00:00:55"), "Part3"
End Sub
Sub Part3()
Call MakeFolders
Application.OnTime Now + TimeValue("00:01:40"), "Part4"
End Sub
Sub Part4()
Call moveMatchedFilesInAppropriateFolders
Application.OnTime Now + TimeValue("00:01:55"), "Part5"
End Sub
Sub Part5()
Call OrganizeFilesByFileType
Application.OnTime Now + TimeValue("00:02:35"), "Part1"
End Sub
я буду благодарен
@FreeFlow Возможно, это можно сделать в VBA, но я всего лишь учусь, поэтому не могу написать это правильно :) Не могли бы вы помочь, как написать standalone.exe, чтобы я мог добавить это в планировщик Windows, и, надеюсь, это будет запускать каждые 5 дней в 12:00 полночь :) Спасибо
Вам была оказана необходимая помощь. Один из примеров проектов доступен при открытии TwinBasic Ide для создания стандартного исполняемого файла. Вы также можете использовать VB.Net или C#, но для этого потребуется установить Visual Studio.
Хорошо, спасибо @freeflow, дайте мне поработать над twinbasic.com
Вы также можете использовать что-то вроде VBS или Powershell, оба могут быть запланированы в планировщике задач, как exe-файлы.
Ну, это вроде как возможно, это просто не САМЫЙ ЛУЧШИЙ способ что-то сделать.
Сначала выполните все 5 шагов и вызовите их все из модуля рабочей книги.
Убедитесь, что он установлен на Workbook_Open Trigger:
Option Explicit
Private Sub Workbook_Open()
' > Give you enough time to Pause/Break when you manually open the file.
Application.Wait Now() + TimeValue("00:00:30")
' > Run Series
Call DeleteFiles 'Part 1
Call CopyFiles_r2 'Part 2
Call MakeFolders 'Part 3
Call moveMatchedFilesInAppropriateFolders 'Part 4
Call OrganizeFilesByFileType 'Part 5
' > Close WB
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
Затем откройте планировщик задач:
Создайте новую задачу:
Или что угодно...
Здесь введите программу Dir for Excel и файл .xlsm:
Наконец-то Сохранить!
Ограничения:
Это может работать только тогда, когда вы вошли в систему и компьютер не спит.
Есть способ запланировать вход в систему по расписанию... но это много работы, и политика безопасности вашей компании может не нравиться этому.
Я бы посоветовал вам использовать «запуск при входе в систему» в этом случае.
<
ОБНОВЛЯТЬ:
Private Sub Workbook_Open()
должен находиться в модуле ThisWorkbook
:
Так что теперь каждый раз, когда я открываю свою книгу, она говорит «Hello World».
Вау, спасибо за подробный ответ, я проверю и вернусь
Я скопировал и вставил Sub, который вы предоставили, в свою панель VBA. В моем конце это был модуль6, поэтому я переименовал модуль6 в Workbook_Open. Затем я выполнил процедуру, которую вы предложили для расписания задач. Наконец, он открыл правильную книгу, но код не работает, т. е. он не выполняется, просто открывая файл
Ах, нет. Вам нужно поместить его в модуль «ThisWorkbook». Я обновлю свой ответ.
Если вы используете Excel просто как место для хранения кода для управления файлами, я бы создал задачи как автономные исполняемые файлы, а затем использовал окна для планирования выполнения задач в соответствующее время. Вы не можете сделать это с помощью VBA, но, к счастью, в этом блоке есть новый ребенок, twinBasic, twinbasic.com/preview.html, который является заменой VB/VBA, который позволит вам сделать именно это, и очень легко .