Как запускать макросы Excel VBA только на некоторое время - PullRequest
0 голосов
/ 26 марта 2020

Я разработал макрос Excel, который проверяет конкретный каталог для файла, если существует соответствующий файл, который он выберет и выполнит макрос, я хочу проверить каталог только на 5 минут, если файл создан / появляется в упомянутой директории, которую он должен выбрать и обработать, если не выдает ошибку. Как запустить макрос только для определенного времени.

Do

    If fso.FileExists("file") Then

        Exit Do
    End If

    DoEvents 'Prevents Excel from being unresponsive
    Application.Wait Now + TimeValue("0:00:01") 'wait for one second
Loop

MsgBox "file available"

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Попробуйте этот код, пожалуйста. Это ждать 10 секунд. Легко адаптироваться к тому, что вам нужно.

Sub testFiniteLoop()
 Dim start As Date, fso As Object, fileName As String, boolFound As Boolean

 Set fso = CreateObject("Scripting.FileSystemObject")
 fileName = "C:\test.txt" ' use here your full file name
 start = Now
 Do While Now <= start + TimeValue("00:00:10")' use here what time you need

    If fso.FileExists(fileName) Then
        boolFound = True
        Exit Do
    End If

    DoEvents 'Prevents Excel from being unresponsive
    Application.Wait Now + TimeValue("0:00:01") 'wait for one second
 Loop

 MsgBox IIf(boolFound, "File available", "Checking time passed")
End Sub
2 голосов
/ 26 марта 2020

Вот типичный способ ожидания события в течение ограниченного периода времени:

Sub DualCriteria()
    Dim tStart As Date, tNow As Date
    msg = ""
    tStart = Now

    Do
        DoEvents
        If Range("A1").Value <> "" Then
            msg = "event occured"
            Exit Do
        End If
        tNow = Now
        If tNow - tStart > TimeSerial(0, 5, 0) Then
            msg = "timeout"
            Exit Do
        End If
    Loop

  MsgBox msg
End Sub

Макрос ожидает, когда пользователь поместит значение в ячейку A1 . Если в течение 5 минут ничего не происходит, l oop все равно завершается.

В сообщении указывается, почему закончился l oop.

ПРИМЕЧАНИЕ:

Doevents позволяет разделить фокус с действиями на листе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...