Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 19.01.2016
Сообщений: 149

Application.onTime повторно вызывает открытие документа

28.02.2018, 15:09. Показов 6423. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добный день. Целый день бьюсь над этой проблемой.
Суть в том, что скорее всего (это я уже методом тыка понял) после закрытия книги метод Application.onTime остается запланированным и снова открывает документ через время, которое ему запланировано для выполнения заданной ему функции. Я поборол это таким способом
Visual Basic
1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub
Но это работает (файл после закрытия уже не открывается сам) только когда закрываешь книгу на крестик, а если запустить функцию - closeFile, то файл снова откроется после закрытия. Я в затыке конкретном, ведь во время выполнения функции closeFile все равно вызовится -
Visual Basic
1
2
3
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Application.OnTime cancelTime, "checkFile", , False
End Sub
Пример
http://rgho.st/6cyDZTph7
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2018, 15:09
Ответы с готовыми решениями:

Application.Ontime и процедура с параметрами
Добрый день. Хочу вызвать процедуру BlinkingCell через каждые 3 секунды. Проблема в том, что процедура имеет входящие параметры: x,y,...

Аналог Application.OnTime в OutLook
нужен аналог функции Application.OnTime в Outlook, по аналогии Excel такое решение подходит так как грузит зря процессор Public Sub...

Перевод функций Application.OnTime и Format из VBA в VBS
хочу перевести в vbs файл код из vba excel. Private Sub Workbook_Open() ' если будет файлик vbs то я пропишу автозапуск с bat файла ...

27
0 / 0 / 1
Регистрация: 19.01.2016
Сообщений: 149
01.03.2018, 21:19  [ТС]
Студворк — интернет-сервис помощи студентам
Как в том мультике....."Урааааа, заррработало!"

Вот рабочий код, ничего лишнего и кстати вторая запятая не мешает, видимо там можно еще какой-то необязательный аргумент указывать.
Visual Basic
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
Добавлено через 5 минут
OnTime( EarliestTime , Procedure , LatestTime , Schedule ) - вот все законно
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
01.03.2018, 22:24
Чёрт его знает с этой запятой - я тоже такие примеры видел, но у меня на работе так глючило, если прописать явно - то порядок.
Ну работает теперь и ладно.
А что с мультидоступом только для чтения - не взлетело?
0
0 / 0 / 1
Регистрация: 19.01.2016
Сообщений: 149
01.03.2018, 22:42  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
А что с мультидоступом только для чтения - не взлетело?
Во-первых мне понравилась эта идея, я захотел ее реализовать. Она крута тем, что автоматом закрывает файл у диспетчера, обновляются данные в книге, после этого файл 1.txt удаляется. Это происходит очень быстро, но даже если в момент обновления диспетчер захочет зайти, файл тут же закроется.
Во-вторых я подумал, что если только для чтения то будет косяк. Допустим файл у диспетчеров открыт, я внес изменения, а они продолжают работать по старому графику, динамически же у них не поменяются данные.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
01.03.2018, 22:51
Ну да, не поменяются. Может им макросом вывести сообщение? По наличию того же файла 1.txt
Думаю в этом коде лишнее Workbooks("test.xlsm").Save - раз они только читают. Файл бы не мешало сделать readonly тогда, а если они что-то нечаянно изменят - то тогда при сохранении будет ошибка. А если не readonly - тогда сохранение сломает что-нить...
В этой реализации есть риск что они откроют файл без включения макросов - для такого случая нужно бы всё спрятать и запаролить, и показывать только макросом по событию открытия книги. Нет макроса - нет данных!
0
0 / 0 / 1
Регистрация: 19.01.2016
Сообщений: 149
01.03.2018, 23:00  [ТС]
Hugo121,
По readonly - это думаю лишним не будет, можно будет добавить еще и это. А по поводу макросов.....я скажу так, я себя считаю дундуком в этом плане, а там сидят люди, которые даже не знают что такое макросы и с чем их едят

Изначально меня бесило то, что надо вечно звонить, чтобы закрыли файл для обновления данных. А бывает что занято у них или отошли...короче зачем делать дурную работу, если можно решить все одним кликом. И всем счастье.
Вам большое спасибо за помощь! За потраченное время!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
01.03.2018, 23:06
Ну так наши бабушки очень часто не видят той большой жёлтой кнопки, а разрешать всё без вопросов может быть запрещено политикой...
Так и будут читать файл без макросов, и опять будете звонить...
Нужно прятать рабочие листы при закрытии файла (хотя если readonly - это лишнее), и открывать макросом при открытии.
0
0 / 0 / 1
Регистрация: 19.01.2016
Сообщений: 149
01.03.2018, 23:26  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
Так и будут читать файл без макросов, и опять будете звонить...
Если что-то пойдет не так я об этом сразу узнаю) и буду думать дальше. На данном этапе все должно должно быть чики.
Кстати завтра на работе в боевом режиме надо протестить, это я дома побовал и все ОК. А на работе может что-то всплыть, но по идее уже все должно быть гуд.
0
0 / 0 / 0
Регистрация: 10.06.2016
Сообщений: 3
25.02.2019, 12:55
Добрый день!

Подскажите, пожалуйста, с решением следующей проблемы.
Есть отчет c Application.OnTime, который каждый день запускается в определенное время, обновляет Access и после этого направляет на почту отчет. Все стабильно работает, однако отчет почему-то приходит на почту два раза в перерывах 2-5 минут. С Чем это может быть связано?

Обновление Access, которое затем запускает следующий макрос:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Refresh()
 
Dim Asс As Object
Dim strMDBPath As String
Dim pwd As String
 
strMDBPath = "ххх.mdb"
pwd = "ххх"
 
Application.DisplayAlerts = False
Set Asс = CreateObject("Access.Application")
With Asс
    .Visible = False
    .OpenCurrentDatabase strMDBPath, False, pwd
    .DoCmd.RunMacro "Ex"
End With
 
Call Send_Mail
End Sub
Формирование и отправка письма, после чего запускается Application.OnTime для запуска обновления на следующий день:

Visual Basic
1
2
3
4
5
6
7
8
Sub Send_Mail()
    Dim oOutlApp As Object, objMail As Object
    Dim sBody As String, sAttachment As String
 .......
 
    DoEvents
Application.OnTime TimeValue("07:30:00"), "Refresh"
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2019, 12:55

Application.OnTime: Удалить строку во время, в ней указанное
В excele бд, в 9 столбце которой находиться время(везде разное). Нужно, чтобы макрос, в указанное в ячейке время удалял ту строчку в...

Возможно ли использование более одной Application.OnTime в VBA MS Word
Добрый день! Возник такой вопрос - возможно ли использование более одной Application.OnTime в VBA MS Word? Справка говорит, что нет,...

Не удается вызвать процедуру Application.OnTime в модуле объекта, как исправить?
привет всем, при нажатии кнопки вызывается процедура CommandButton3_Click(), которая должна запускать через 3 секунды функцию Proc,...

Application.OnTime не работает отключение таймера
excel 2007 есть код в модуле, который запускается из UserForm запуск работает,а вот остановка нет В чем дело? ' запуск...

Ssh открытие окна программы в терминале повторно
Здравствуйте. У меня три вопроса. 1) Допустим, я подключился к компьютеру (Debian) через ssh, перешел в папку с java сервером для одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru