Для запуска макросов VBA каждые 5 дней

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

я буду благодарен

Если вы используете Excel просто как место для хранения кода для управления файлами, я бы создал задачи как автономные исполняемые файлы, а затем использовал окна для планирования выполнения задач в соответствующее время. Вы не можете сделать это с помощью VBA, но, к счастью, в этом блоке есть новый ребенок, twinBasic, twinbasic.com/preview.html, который является заменой VB/VBA, который позволит вам сделать именно это, и очень легко .

freeflow 08.01.2023 09:11

@FreeFlow Возможно, это можно сделать в VBA, но я всего лишь учусь, поэтому не могу написать это правильно :) Не могли бы вы помочь, как написать standalone.exe, чтобы я мог добавить это в планировщик Windows, и, надеюсь, это будет запускать каждые 5 дней в 12:00 полночь :) Спасибо

Salman Shafi 08.01.2023 10:29

Вам была оказана необходимая помощь. Один из примеров проектов доступен при открытии TwinBasic Ide для создания стандартного исполняемого файла. Вы также можете использовать VB.Net или C#, но для этого потребуется установить Visual Studio.

freeflow 08.01.2023 10:38

Хорошо, спасибо @freeflow, дайте мне поработать над twinbasic.com

Salman Shafi 08.01.2023 10:40

Вы также можете использовать что-то вроде VBS или Powershell, оба могут быть запланированы в планировщике задач, как exe-файлы.

NickSlash 08.01.2023 16:19
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
5
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, это вроде как возможно, это просто не САМЫЙ ЛУЧШИЙ способ что-то сделать.

Сначала выполните все 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».

Вау, спасибо за подробный ответ, я проверю и вернусь

Salman Shafi 10.01.2023 06:29

Я скопировал и вставил Sub, который вы предоставили, в свою панель VBA. В моем конце это был модуль6, поэтому я переименовал модуль6 в Workbook_Open. Затем я выполнил процедуру, которую вы предложили для расписания задач. Наконец, он открыл правильную книгу, но код не работает, т. е. он не выполняется, просто открывая файл

Salman Shafi 10.01.2023 07:31

Ах, нет. Вам нужно поместить его в модуль «ThisWorkbook». Я обновлю свой ответ.

Cameron Critchlow 10.01.2023 18:05

Другие вопросы по теме