Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Application.onTime повторно вызывает открытие документа / 2 сообщений из 2, страница 1 из 1
28.02.2018, 22:08
    #39608738
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Application.onTime повторно вызывает открытие документа
Добный день. Целый день бьюсь над этой проблемой.
Суть в том, что скорее всего (это я уже методом тыка понял) после закрытия книги метод Application.onTime остается запланированным и снова открывает документ через время, которое ему запланировано для выполнения заданной ему функции. Я поборол это таким способом
Код: vbnet
1.
2.
3.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub


Но это работает (файл после закрытия уже не открывается сам) только когда закрываешь книгу на крестик, а если запустить функцию - closeFile, то файл снова откроется после закрытия. Я в затыке конкретном, ведь во время выполнения функции closeFile все равно вызовится -
Код: vbnet
1.
2.
3.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub
...
Рейтинг: 0 / 0
01.03.2018, 22:51
    #39609439
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Application.onTime повторно вызывает открытие документа
Нашел решение.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
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
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Application.onTime повторно вызывает открытие документа / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]