Страницы: 1
RSS
Отключается On Error Resume Next, VBA перехват ошибки
 
Добрый день

Не могу понять причины выключается  игнор ошибок

Код
Application.ScreenUpdating = False
Workbooks.Application.DisplayAlerts = False

On Error Resume Next

a = адрес файла
Workbooks.Open FileName:=a

выскакивает ошибка, если файл занят
проверял Workbooks.Application.DisplayAlerts = False
в immediate
?Workbooks.Application.DisplayAlerts
Вывод она отключается или не выключается(выключается внутри модуля)
видно при открытие файла при переходе к ниму и обратно ексель забывает что у него игнор ошибок и DisplayAlerts = False
как с этим бороться?  
Изменено: Фродо - 14.04.2016 18:09:44
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Если файл занят, то файл открывается  в режиме Только для чтения, при этом не появляется никаких сообщений (если открывается макросом).
Не понятна Ваша ситуация.
 
Karataev,
да я сам в шоке от этой ситуации, на домашнем компьютере вообще не как не могу спровоцировать ошибку

но грешу на это (можно на домашнем увидеть)
Код
в макрос
проверял Workbooks.Application.DisplayAlerts = False 
в immediate 
?Workbooks.Application.DisplayAlerts 
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
так есть способ проверить включен игнор ошибок или нет в середине кода, при остановке?
On Error Resume Next
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Прежде чем обсуждать On Error Resume Next, сначала нужно понять, что у Вас там вообще происходит.
Почему при открытии файла появляется ошибка? Какая ошибка? Файлы в локальной сети находятся?

Вообще у Вас включен режим для работы с обработчиком ошибок? Такой код у Вас работает без возникновения ошибки?
Код
Sub jjj()
    On Error Resume Next
    Debug.Print 1 / 0
End Sub
Изменено: Karataev - 15.04.2016 13:17:07
 
Цитата
Karataev написал:
Почему при открытии файла появляется ошибка? Какая ошибка? Файлы в локальной сети находятся?
причина точно не ясна, скорей всего происходит какае то транзакция другим пользователем с этим файлом
ошибка 1004 выделяет строку Workbooks.Open FileName:=a
файлы в локальной сети
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
имхо - так делать не правильно - если файл нужен вам только для чтения - откривайте с атрибутом только чтение, если для записи - делайте проверку его доступности.
А то результат может быть весьма непредсказуемым:)
 
Цитата
Dima S написал: делайте проверку его доступности.
уточните  пожалуйста этот момент,  как проверить?

ну я исключаю прямую попутку открыть файл и при получение ошибки поймать её код, который может совпасть с номером ошибки по другим причинам которые не мешают выполнению.

уточнения "файл временно не доступен" т.е. может 1 секунду, может 5 секунд (комп тормозит), может 5 мин (синхронизация дисков), но все это не точно так как перво причина не локализована и есть только догадки.
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Цитата
Фродо написал: уточните  пожалуйста этот момент,  как проверить
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=20404
 
Dima S,
почитал эту тему, там в основном проверка открытости, у меня она есть в коде, и проблем не вызывает
UserStatus тоже не суть проблемы, она показывает статус книги, а не то что происходит в данную секунду

Основной проблема, почему при включенном игноре ошибок и отключенных предупреждений выскакивает окно об ошибки ( может по какой то причине она отключается при возникновение какой то ситуации), в связи с чем хочу проверить статус игнора ошибок в определенный период выполнения кода,
Workbooks.Application.DisplayAlerts  проверить вообще невозможно так как в процедуре показывает что отключен, а в immediate  включен
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Цитата
Фродо написал:
у меня она есть в коде, и проблем не вызывает
так а что она делает тогда?
если файл занят - выходим из процедуры или другие действия.
Цитата
Фродо написал:
ошибка 1004 выделяет строку Workbooks.Open FileName:=a
зачем тогда вы пытаетесь открыть его и какой ожидаете получить результат?
или я чего то не понимаю?
Цитата
Фродо написал:
Основной проблема, почему при включенном игноре ошибок и отключенных предупреждений выскакивает окно об ошибки
может баг какой то, но я все же настаиваю, что это не основная проблема. основная проблема - это логика ваших действий.
 
Dima S,
давайте опишу подробней
1.общий файл Х, находится в локальной сети
2. к нему имеют пользователи с разными правами (для чтения, для редактирование)
3. с самим файлом работают через другой, который в зависимости от статуса пользователя Собирает информацию из него, редактирует, вносят новые данные
4. в вовремя работы пользователи очень часто обращаются к файлу через макросы (внос изменения, сохранить, закрыть, открыть)

-иногда во время открытие возникает ошибка на открытие файла (код уже писал, при включенном игноре ошибок)
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
Application.EnableEvents = False

знаешь как использовать? попробуй с ней, не получится, вникнем глубже
Помогли? отпишись, а то мы же волнуемся )))
 
guzen_pilot, да знаю про эвенты, надо будет попробовать, но это равносильно отключение действие по запуску файла,  эвент на открытие файла просматривал и не нашел там кода отключающий игнор ошибки.
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
 
guzen_pilot, у нас на форуме (да и в быту тоже) к незнакомым людям принято обращаться на ВЫ.
 
Цитата
Фродо написал:
на домашнем компьютере вообще не как не могу спровоцировать ошибку
так, на всякий случай - у вас тут(рис.) какая опция?

Цитата
иногда во время открытие возникает ошибка на открытие файла (код уже писал, при включенном игноре ошибок)
опять таки вы не ответили на мой вопрос - зачем несмотря ни на что пытаться открыть файл, если
Цитата
проверка открытости, у меня она есть в коде
говорит, что файл открыт другим пользователем?


еще, как вариант, можно убрать макрос из Workbook_Open "сервера" и повесить его в файл "клиент"
Изменено: Dima S - 16.04.2016 21:26:48
 
Цитата
Dima S написал: так, на всякий случай - у вас тут(рис.) какая опция?
по умолчанию скорей всего, ток в рабочие дни смогу посмотреть, но я думаю наврятли каждый пользователь что то менял в настройках
Цитата
Dima S написал: говорит, что файл открыт другим пользователем?
файл совместном доступе - может открываться и редактироваться одновременно несколькими пользователями (разные ПК в т.ч. разные пользователи)

Цитата
Dima S написал:  Workbook_Open "сервера" и повесить его в файл "клиент"
уже чуть выше это с эвентами обсудили, попробую .
у меня простая версия Экселя, в ней нет кнопки "Прочитать мысли и сгенерировать файл пример"
Страницы: 1
Наверх