Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 14:13   #1
zander
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 113
По умолчанию прерывание работы макроса

Имеется следующий макрос, который следит за файлом (проверяя его каждые 3 сек.)и в случае изменения размера файла запускает макрос DoFile.
Проблема в том, что в файл Alex.csv записываются данные другой программой (по событию) и в случае одновременного обращения к файлу Exel для чтения, и программы для внесения данных, макрос останавливается и пишет, что файл не найден. Можно ли как то избежать остановки макроса? Так что бы если файла нет, то макрос не остановился, а проверил бы файл через через следующие 3 сек. и так далее?

Dim StartingCheking As Boolean
Const Signal = "C:\input\Alex.csv"
Dim FileSizeSignal As Long
Const ChekTimeFrame = 3

Sub WatchOverFile()
StartingCheking = True
Do While StartingCheking = True

NewFileSizeSignal = CreateObject("scripting.filesystemo bject").GetFile(Signal).Size
If NewFileSizeSignal > FileSizeSignal Then DoFile: FileSizeSignal = NewFileSizeSignal
t = Timer: While t + ChekTimeFrame > Timer: DoEvents: Wend
Loop
End Sub
zander вне форума Ответить с цитированием
Старый 21.05.2009, 14:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте через номер ошибки
Если все в норме Err.Number =0

Если документ не найден то Err.Number=53
Если документ открыт то Err.Number=57

Таким кодом определите номер своей ошибки.

If Err.Number <> 0 Then

MsgBox(Err.Number)

End If

потом уже зная номер укажете макросу что делать дальше
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 21.05.2009, 15:18   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Или просто поставь первой строкой в макросе WatchOverFile
строку On Error Resume Next

И больше не увидишь сообщений об ошибках.
EducatedFool вне форума Ответить с цитированием
Старый 21.05.2009, 21:12   #4
zander
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 113
По умолчанию

EducatedFool
Как всегда оперативно и профессонально! Респект!
zander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Визуализация работы макроса Gawwws Microsoft Office Excel 24 01.09.2010 18:16
Log работы макроса valerij Microsoft Office Excel 3 03.03.2009 00:04
Визуализация работы макроса zander Microsoft Office Excel 7 15.02.2009 01:09
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43