|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.12.2010, 10:09 | #1 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 113
|
макрос мониторинга файла не хочет работать долго
приведенный ниже макрос работает корректно, но не долго. Если в течение нескольких часов размеры файлов Alex и/или Alex1 не меня.тся, то макрос перестает отрабатывать изменения котрые спустя несколько часов всетаки меняются по размеру. В чем может быть причина?
Const ИмяФайла1 = "C:\input\Alex.csv" Const ИмяФайла2 = "C:\input\Alex1.csv" Public РазмерФайла1 As Long, РазмерФайла2 As Long, ПоискИзмененийВременноОтключён As Boolean Const ВременнойИнтервалМеждуПроверками = 2 Public Sub СлежениеЗаФайлом() On Error Resume Next If ПоискИзмененийВременноОтключён = True Then Exit Sub Do While True ' бесконечный цикл ПоискИзмененийВременноОтключён = False НовыйРазмерФайла1 = CreateObject("scripting.filesystemo bject").GetFile(ИмяФайла1).Size If НовыйРазмерФайла1 > РазмерФайла1 Then DoFile1 (ИмяФайла1): РазмерФайла1 = НовыйРазмерФайла1 НовыйРазмерФайла2 = CreateObject("scripting.filesystemo bject").GetFile(ИмяФайла2).Size If НовыйРазмерФайла2 > РазмерФайла2 Then DoFile2 (ИмяФайла2): РазмерФайла2 = НовыйРазмерФайла2 t = Timer: While t + ВременнойИнтервалМеждуПроверками > Timer: DoEvents: Wend ' пауза Loop End Sub Public Sub DoFile1(ByVal ИмяФайла1 As String) If Worksheets("Robot").Range("F21").Va lue > 0 And Worksheets("Robot").Range("D21").Va lue = "ON" Then Call robottt End Sub Public Sub DoFile2(ByVal ИмяФайла2 As String) ' включаем перехват If Worksheets("Robot").Range("D21").Va lue = "ON" Then Call Sheets("Robot").s2 End Sub |
01.12.2010, 11:52 | #2 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Убери команду On Error Resume Next и посмотри какие ошибки будут вылетать
Нет нерешаемых задач - есть недостаток времени и данных!
|
01.12.2010, 12:51 | #3 |
Пользователь
Регистрация: 13.08.2009
Сообщений: 10
|
Процессор занят на 100%
http://www.vbnet.ru/forum/show.aspx?id=30025 |
01.12.2010, 14:47 | #4 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 113
|
В целом нет, процессор занят примерно на 50% лишь временами загрузка прыгает до 100% и потом опять опускается до 50
|
01.12.2010, 15:09 | #5 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Попробуйте такой вариант.Через таймер запускаете PROVERKA
и никакаких циклов Код:
Анализ,обработка данных Недорого
|
01.12.2010, 18:58 | #6 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 113
|
спасибо, но вот что то прикрутил я его к макросу, а он не работает... что то не так с таймером?
Const ИмяФайла1 As String = "C:\input\Alex.csv" Const ИмяФайла2 As String = "C:\input\Alex1.csv" Sub PROVERKA() Static Raz_File1 As Double Static Raz_File2 As Double If R_file(ИмяФайла1) > Raz_File1 Then Raz_File1 = R_file(ИмяФайла1) 'Макрос1 Worksheets("Лист1").Range("A1").Val ue = "ON" End If If R_file(ИмяФайла2) > Raz_File2 Then Raz_File2 = R_file(ИмяФайла2) 'Макрос2 Worksheets("Лист1").Range("A2").Val ue = "ON" End If End Sub Function R_file(F_name As String) As Double On Error Resume Next R_file = FileLen(F_name) If Err.Number = 0 Then Exit Function R_file = 0 End Function Public Sub StartMonitoring() Application.OnTime Now + TimeValue("00:00:02"), Worksheets("Лист1").PROVERKA End Sub Public Sub Monitoring() StartMonitoring End Sub |
01.12.2010, 19:03 | #7 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Все верно,код не правильный у таймера,он 1 раз только при старте сработает.
Сейчас напишу правильный Код:
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 01.12.2010 в 19:09. |
01.12.2010, 19:27 | #8 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 113
|
ага, ага... пока работает, сегодня на ночь оставим. А как то можно индикатор работы макроса (любой) прикрутить и как можно остановить работу с помощью кнопки?
|
01.12.2010, 19:49 | #9 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Ячейка А1 будет определять останов
Код:
Анализ,обработка данных Недорого
|
02.12.2010, 11:34 | #10 |
Форумчанин
Регистрация: 24.01.2009
Сообщений: 113
|
Ночь макрос отработал без сбоев! Спасибо!
Скажите, этот макрос ограничен количеством файлов за которыми он может следить или если размножить соответствующую часть макроса можно мониторить 10 - 15 файлов? |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не хочет работать iif | alco84 | Microsoft Office Access | 6 | 18.03.2010 09:48 |
Не хочет работать _alpha во Flash | 666ALUKARD666 | Помощь студентам | 0 | 24.02.2010 12:02 |
Почему Программа не хочет работать | strateg0793 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 8 | 21.01.2010 14:10 |
ну не хочет работать!!! MySQL | artush1984 | Общие вопросы C/C++ | 1 | 06.09.2009 13:41 |
Не хочет работать OpenPictureDialog | guffer | Общие вопросы Delphi | 4 | 08.07.2009 20:14 |