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

Ответить
Аватара пользователя
megaloman

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

Сообщение megaloman »

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 необходимо указывать чтобы подавить сообщение?
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата megaloman:



Как решение, сделал предварительную проверку на существование файла, то есть перед On Error вставил еще один If.
2010 - Excel 2010. Макрос. Подавить сообщение при открытии файла, если его нет




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

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

Сообщение megaloman »

Цитата:



Как решение, сделал предварительную проверку на существование файла



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

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

Сообщение Iska »

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 всё равно нужен.
2010 - Excel 2010. Макрос. Подавить сообщение при открытии файла, если его нет




Что значит «нормально»?
Аватара пользователя
megaloman

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

Сообщение megaloman »

Подпорченный файл эксел нормально не откроет

В принципе, во мне говорит консерватизм - подайте мне то, что было, и раздражение - нет полной совместимости на совершенно ровном месте. Вообще хватает замены

If Err.Number = 0 Then

на

If FSO.FileExists and Err.Number = 0 (или без err.number), так как FSO я всё равно использую для перемещения обработанных файлов
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата megaloman:



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




Как такое получается? На моей памяти такого было, ну, пару раз.
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»