Страницы: 1
RSS
Макрос для обхода ошибки при открытии файла
 
Добрый день знатокам!
Есть макрос, запускаемый из файла Итог, собирающий отчеты (несколько строк) из нескольких файлов Excel (известна папка куда они складываются, макрос по очереди открывает файлы из папки и добавляет их содержимое в один список). С некоторых пор возникла следующая проблема - некоторые исходные файлы-отчеты кривые и при открытии такого файла командой Workbook.Open макрос вываливается с ошибкой - Method Open of object Workbooks failed. Приходится вручную открывать кривой файл (при открытии - сообщение что содержимое файла повреждено и предложение исправить ситуацию - Да/Нет), и согласившись с исправлениями пересохранять. Почему файлы кривые пока не разобрался, какой-либо закономерности на первый взгляд не обнаружил.
Возможно ли как-то выправить положение?... Может у команды Workbook.Open есть хитрые параметры, позволяющие обойти эту ошибку? и принудительно согласиться с предложенными исправлениями и все же открыть кривой файл? Буду очень благодарен за помощь в решении/обсуждении этого вопроса.
 
Application.DisplayAlerts = False
 
Спасибо за помощь!
Сделал тестовый макрос в 3 строки: 1-я - Application.DisplayAlerts = False, затем 2-я - Workbooks.Open <кривой файл>, 3-я - Application.DisplayAlerts = True, но при выполнении все равно выскакивает та же ошибка - error '1004' - method Open of object Workbooks failed. Макрос прерывается на строке Открытия файла (подсвечивается желтым), но при наведении курсора мыши на 1-ю строку с командой Application.DisplayAlerts = False, подсвечивается значение True, непонятно..., вроде как должно остаться False, ведь макрос до конца не доработал... Возможно, заблудился в трех соснах..., буду признателен, если поможете найти дорогу  :(
 
Смотрите последний параметр функции Workbooks.Open

CorruptLoad

Optional

XlCorruptLoad

Can be one of the following constants: xlNormalLoad, xlRepairFile and xlExtractData. The default behavior if no value is specified is xlNormalLoad and does not attempt recovery when initiated through the OM.
код будет выглядеть примерно так:

Код
1
2
3
4
5
6
7
8
On Error Resume Next : err.clear
set wb =  Workbooks.Open(filename$) ' попытка открыть файл «нормально»
if err.number=1004 then  ' если не получилось - пробуем восстановить файл при открытии
  err.clear
  set wb =  Workbooks.Open(filename$, CorruptLoad:=xlRepairFile )
end if
 
if err then msgbox "не удалось открыть файл": exit sub


PS: перемудрили что-то с форумом, невозможно код писать, - приходится в режиме bb code постоянно исправлять глюки
 
Игорь, огромное спасибо!, все отлично работает.
 
Недавно искал подходящий макрос для сбора данных с закрытых книг в одной определенной папке
свою задачу решил другим способом, но все же если не сложно, выложите пожалуйста код сбора. Буду очень признателен
 
Цитата
искал подходящий макрос для сбора данных с закрытых книг в одной определенной папке
и что, не нашли???
http://excelvba.ru/code/CombineFiles
Страницы: 1
Читают тему
Наверх
Loading...