|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.01.2011, 23:21 | #1 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 82
|
Обновление по таймеру
Уважаемые форумчане.
Сделал обновление по таймеру. При открытом файле Обновление данные из файла Источник периодически и последовательно заносятся в файлы Книга13 и Книга14. Использую такую конструкцию Код:
Но на практике все файлы лежат на сервере. Для их открытия, обновления, сохранения потребуется несколько большее время, чем на ПК. Будет ли такая последовательность работать, не задерживая и, не останавливая друг друга. И если сбой возможен, то как поставить необходимое время ожидания? Например. Идет обработка файла Книга13, и, пока она не закончится, обработка файла Книга14 не начнется? |
07.01.2011, 00:06 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
а сделайте так:
Код:
если обязательно надо выполнять это 1 раз в минуту, то если книги 13, 14 не обрабатываются за минуту, вы все равно собьете ритм, можете внутри этой процедуры засечь время обработки книг 13,14 и подкорректировать время следующего запуска, на время уже затраченное на разработку.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
07.01.2011, 11:16 | #3 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 82
|
IgorGO,
Я понял так, что действия Open, Run, Save, Close Книги13 должны выполняться Excel-ем последовательно, дожидаясь каждая своей очереди. Только затем начнутся последовательно выполняться процедуры по Книге14. Я Вас правильно понял? Время 1 минута поставлено ориентировочно, его можно и увеличить до необходимого. Вы упомянули : "...внутри этой процедуры засечь время обработки книг 13,14..." Подскажите, пожалуйста, это нужно делать с помощью создания подпрограммы для запуска часов и функции остановки часов? Или по-другому? Уважаемые форумчане. Время обработки файлов книга 13, 14 на сервере зависит от количества обращений к серверу других пользователей. А я, как пользователь, могу как-то узнать какой-нибудь параметр, - как обрабатывается мое текущее обращение или что-то характеризующее этот процесс. Вопрос вызван тем, что время обращения к серверу колеблется в достаточно значительном промежутке времени? И что с этим делать, кроме уменьшения объема файла? IgorGO, попробовал Ваше предложение. Прекрасно работает на ПК (еще бы. Чья мысль-то) Последний раз редактировалось Stilet; 07.01.2011 в 15:12. |
07.01.2011, 11:36 | #4 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Можно поставить в цикл в начале макроса проверку, открыта ли книга 14 и пока она открыта не выполнять макрос.
Function WorkbooklsOpen(wbname) As Boolean 'Возвращает ИСТИНА, если рабочая книга открыта Dim х As Workbook On Error Resume Next Set x = Workbooks(wbname) WorkbooklsOpen = (Err = 0) End Function
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
07.01.2011, 11:45 | #5 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 82
|
kuklp, спасибо.
Мой вопрос связан с тем, что таких книг, последовально обновляемых - добрая дюжина. |
07.01.2011, 13:18 | #6 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Так и проверяйте последнюю из них.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
07.01.2011, 13:59 | #7 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
добрая дюжина - это 14 шт.?
так не покатит: Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
07.01.2011, 15:01 | #8 |
Участник клуба
Регистрация: 02.05.2010
Сообщений: 1,390
|
Я вообще сомневаюсь, что пока не закроется предыдущая книга, Экс начнет открывать следующую. По идее тут и проверок не надо. И вот это:
ActiveWorkbook.Save ActiveWorkbook.Close лучше так: ActiveWorkbook.Close(True)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728 |
07.01.2011, 18:51 | #9 | |
Пользователь
Регистрация: 19.12.2010
Сообщений: 82
|
Цитата:
Вручную, при открытии файла, Excel не дает открывать следующий файл, обрабатывает файлы последовательно. Почему же программно Excel должен обрабатывать файлы иначе? Пожалуйста, пару слов о замене: ActiveWorkbook.Save ActiveWorkbook.Close лучше так: ActiveWorkbook.Close(True) Почему так будет лучше? |
|
07.01.2011, 19:10 | #10 |
Пользователь
Регистрация: 19.12.2010
Сообщений: 82
|
IgorGO,
да 14, ну и интуиция у Вас! Попутно спасибо за пример применения on error resume next ... loop until err.number = 0 .... on error goto 0 "Применяйте обработчик ошибок и будет Вам щ-щ-астье" |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обновление VirtualStringTree по таймеру | woofer | Помощь студентам | 1 | 22.05.2010 02:55 |
Срабатывание датчика по таймеру | RockForr | Общие вопросы Delphi | 8 | 26.05.2009 16:32 |
COM, TThread, обращение по таймеру | Антон Ю.Б. | Общие вопросы Delphi | 2 | 17.02.2009 09:23 |
Автосохранения по таймеру | ScreN | Общие вопросы Delphi | 13 | 09.01.2009 18:49 |
Вызов функции по таймеру | Lexicss | Общие вопросы Delphi | 4 | 30.05.2007 22:47 |