Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Application.onTime повторно вызывает открытие документа  [new]
vdekameron
Member

Откуда:
Сообщений: 643
Добный день. Целый день бьюсь над этой проблемой.
Суть в том, что скорее всего (это я уже методом тыка понял) после закрытия книги метод Application.onTime остается запланированным и снова открывает документ через время, которое ему запланировано для выполнения заданной ему функции. Я поборол это таким способом
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub

Но это работает (файл после закрытия уже не открывается сам) только когда закрываешь книгу на крестик, а если запустить функцию - closeFile, то файл снова откроется после закрытия. Я в затыке конкретном, ведь во время выполнения функции closeFile все равно вызовится -
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub


К сообщению приложен файл (test.xlsm - 15Kb) cкачать
28 фев 18, 22:08    [21226483]     Ответить | Цитировать Сообщить модератору
 Re: Application.onTime повторно вызывает открытие документа  [new]
vdekameron
Member

Откуда:
Сообщений: 643
Нашел решение.

Public cancelTime As Variant
 
Function closeFile()
    Workbooks.Application.DisplayAlerts = False
    Application.OnTime cancelTime, "checkFile", , False
    
    Workbooks("test.xlsm").Save
    Workbooks("test.xlsm").Close
End Function
 
Function checkFile()
    cancelTime = (Now + TimeValue("00:00:05"))
    Application.OnTime cancelTime, "checkFile"
    
    If IsHasFile("C:\Users\vdekameron\Downloads\1.txt") = True Then
        closeFile
    End If
End Function
 
Function IsHasFile(Path As String) As Boolean
    If Dir(Path) = "" Then
        IsHasFile = False
    Else
        IsHasFile = True
    End If
End Function
1 мар 18, 22:51    [21230441]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить