Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Excel 2010. Макрос. Подавить сообщение при открытии файла, если его нет

Ответить
Настройки темы
2010 - Excel 2010. Макрос. Подавить сообщение при открытии файла, если его нет

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Excel 2003. Фрагмент макроса.
Код: Выделить весь код
        On Error Resume Next
        Workbooks.Open Filename:=File_Name
        
        If Err.Number = 0 Then
            ..........
        End If
Прекрасно работает. При отсутствии файла не выдаёт никаких сообщений.

В Excel 2010 если файла нет, выдаётся сообщение, в принципе, оно позволяет продолжить выполнение макроса, и Err.Number <> 0, (If отрабатывает правильно) но это напрягает, особенно если грузится вподряд много файлов.
Как решение, сделал предварительную проверку на существование файла, то есть перед On Error вставил еще один If.
А нельзя ли обойтись без этого, какой параметр для Open необходимо указывать чтобы подавить сообщение?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 18:24, 14-11-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Как решение, сделал предварительную проверку на существование файла, то есть перед On Error вставил еще один If. »
Просто используйте метод «.FileExists()» объекта автоматизации «Scripting.FileSystemObject» (хорошо известному по WSH), независимо от того, как Вы его будете создавать — ранним, або поздним связыванием. Никакие On Error при этом вовсе не нужны.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:19, 15-11-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата:
Как решение, сделал предварительную проверку на существование файла
-сделал именно так, как Вы предложили. Но именно этого не хочется делать - куча таблиц с макросами, которые что-то собирают из разных файлов, которые не всегда пришли на момент обработки, хотелось обойтись самым минимумом доработки. В VBS, кстати, Open с On Error отрабатывает как мне надо. ИМХО, наличие файла не гарантирует, что он нормально откроется, on error всё равно нужен.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 22:06, 15-11-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


megaloman, почему не хочется? Если не использовать раннее связывание — «Dim objFSO As New Scripting.FileSystemObject», с созданием в каждом проекте ссылки на библиотеку, — можно обойтись всего семью строчками:
Код: Выделить весь код
Dim objFSO As Object

Set objFSO = CreateObject("Scripting.FileSystemObject")

…

If objFSO.FileExists(strFile) Then
    …
Else
    Msgox "Not found [" & strFile & "]"
End If
…
Set objFSO = Nothing
Цитата megaloman:
ИМХО, наличие файла не гарантирует, что он нормально откроется, on error всё равно нужен. »
Что значит «нормально»?

Отправлено: 23:30, 15-11-2012 | #4


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Подпорченный файл эксел нормально не откроет
В принципе, во мне говорит консерватизм - подайте мне то, что было, и раздражение - нет полной совместимости на совершенно ровном месте. Вообще хватает замены
If Err.Number = 0 Then
на
If FSO.FileExists and Err.Number = 0 (или без err.number), так как FSO я всё равно использую для перемещения обработанных файлов

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 16-11-2012 в 00:56.


Отправлено: 00:44, 16-11-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Подпорченный файл эксел нормально не откроет »
Как такое получается? На моей памяти такого было, ну, пару раз.

Отправлено: 02:05, 16-11-2012 | #6



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Excel 2010. Макрос. Подавить сообщение при открытии файла, если его нет

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Помогите написать макрос в Excel, экспорт данных из Excel в Word. E.v.g Программирование и базы данных 7 03-05-2018 22:18
Разное - При открытии второго файла, excel вырубается полностью!!! Da4nik Microsoft Office (Word, Excel, Outlook и т.д.) 2 03-04-2012 14:34
VBA - [решено] Excel макрос прячущий листы файла McLotos Программирование и базы данных 7 06-03-2012 12:26
2007 - Excel 2007. Виснет при открытии файла Farxat Microsoft Office (Word, Excel, Outlook и т.д.) 2 21-10-2010 11:55
2003/XP/2000 - [решено] Excel | При открытии файла .exl на экране одно только серое окно. Natalya1505 Microsoft Office (Word, Excel, Outlook и т.д.) 3 06-02-2010 18:23




 
Переход